采用分治的思想,递归实现。用前后指针法进行单次排序,较为简单。
这里是其他人写的三种详细的快速排序原理和方法:
https://blog.csdn.net/qq_36528114/article/details/78667034
#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
using namespace std;
int a[101];
int n;
int partSort(int* array, int left, int right)
{
int & key = array[right];
while (left < right)
{
while (left < right && array[left] <= key)
{
++left;
}
while (left < right && array[right] >= key)
{
--right;
}
swap(array[left], array[right]);
}
swap(array[left], key);
return left;
}
void quickSort(int* array, int left, int right)
{
if (left >= right)
{
return;
}
int index = partSort(array, left, right);
quickSort(array, left, index - 1);
quickSort(array, index + 1, right);
}
int main()
{
scanf("%d", &n);
for (int i = 1; i <= n; i++)
scanf("%d", &a[i]);
quickSort(a,1, n);
for (int i = 1; i <= n; i++)
printf("%d ", a[i]);
return 0;
}