题目
思路
打卡题
需要注意的是,,这个题目在左右平移的时候 相等的情况都是要继续移动的
代码
#include<iostream>
using namespace std;
void quicksort(int* arr, int left, int right, int n)
{
if(left < right)
{
int l = left, r = right, compare = arr[left];
while(l < r)
{
while(l < r && arr[r] >= compare)//取等
r--;
if(l < r)
arr[l++] = arr[r];
while(l < r && arr[l] <= compare)//取等
l++;
if(l < r)
arr[r--] = arr[l];
}
arr[l] = compare;
for(int i = 0; i < n - 1; i++)
cout << arr[i] << " ";
cout << arr[n - 1] << endl;
quicksort(arr, left, l - 1, n);
quicksort(arr, l + 1, right, n);
}
}
int main()
{
int n;
cin >> n;
int * arr = new int[n];
for(int i = 0; i < n; i++)
cin >> arr[i];
quicksort(arr,0,n - 1,n);
}