虽然可以自己用sort()函数实现,但是自己写一遍也有利于理解快排
1、在一个无序的数组里随机找一个作为基准值。
2,然后让数组里的每一个数字和基准值比较,比基准值大的放在基准值右边,比基准值小的,放在基准值左边。
3,递归调用这个函数,使得整个数组有序。
#include<iostream>
using namespace std;
void quicksort(int a[], int start, int end)//手写快排
{
int i = start, j = end, temp, flag = a[i];
do
{
while (a[i] < flag)i++;
while (a[j] > flag)j--;
if (i <= j)
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
i++;
j--;
}
} while (i <= j);
if (start < j)quicksort(a, start, j);
if (i < end)quicksort(a, i, end);
}
int a[100];
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; i++)
cin >> a[i];
quicksort(a, 0, n - 1);
for (int i = 0; i < n; i++)
cout << a[i] << " ";
return 0;
}