1、递归实现
int main()
{
int arr[] = {65, 70, 75, 80, 85, 60, 55, 50, 45};
int n = sizeof(arr) / sizeof(int);
cout<<"排序前为:";
for(int i=0; i<n; i++)
cout<<arr[i]<<" ";
cout<<endl;
QuickSort(arr, 0, n-1);
cout<<"排序后为:";
for(int i=0; i<n; i++)
cout<<arr[i]<<" ";
cout<<endl;
return 0;
}
void QuickSort(int arr[], int low, int high)
{
if(low > high)
return;
int i = low;
int j = high;
int target = arr[low]; //选取低位low位置的元素作为目标元素
while(i < j)
{
while(j>i && arr[j]>target)
j--;
if(j<=i)
break;
while(i<j && arr[i]<=target)
i++;
if(i>=j)
break;
Swap(arr[i], arr[j]); //交换
j--;
i++;
}
Swap(arr[low], arr[j]); //将low位的目标元素放到正确位置
QuickSort(arr, low, j-1);
QuickSort(arr, j+1, high);
}