#include <iostream>
using namespace std;
#define maxn 65536
int arr[maxn];
void quicksort(int arr[], int begin, int end)
{
if (begin >= end)
return;
int i = begin, j = end, pivot = arr[begin];
while (i != j)
{
while (i < j && arr[j] > pivot)
--j;
if (i < j)
arr[i++] = arr[j];
while (i < j && arr[i] < pivot)
++i;
if (i < j)
arr[j--] = arr[i];
}
arr[i] = pivot;
quicksort(arr, begin, i - 1);
quicksort(arr, i + 1, end);
}
int main()
{
int n, i;
cin >> n;
for (i = 0; i < n; ++i)
cin >> arr[i];
quicksort(arr, 0, n - 1);
for (i = 0; i < n; ++i)
cout << arr[i] << " ";
cout << endl;
return 0;
}
主要思想:遞歸分治+兩端逼近
注意其中的第一個循環是while(i!=j)的,剩餘的循環多是while(i<j)的,這是平時注意不到的點,需要緊記一下!!