Quick_Sort(快速排序)
一、算法思路:
通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
二、时间复杂度:O (nlogn)
三、稳定性:不稳定
四、代码段:
#include <iostream>
using namespace std;
void sort(int *a, int left, int right)
{
if (left > right)
return;
int i = left;
int j = right;
int key = a[right];
while (i<j)
{
while (i < j&&a[i] <= key)
{
i++;
}
a[j]=a[i];
while (i<j&&a[j] >= key)
{
j--;
}
a[i] = a[j];
a[j] = key;
sort(a, left, j - 1);
sort(a, j + 1, right);
}
}
int main()
{
int a[] = { 57, 68, 59, 52, 72, 28, 96, 33, 24 };
sort(a, 0, sizeof(a) / sizeof(a[0]) - 1);/*这里原文第三个参数要减1否则内存越界*/
for (int i = 0; i < sizeof(a) / sizeof(a[0]); i++)
{
cout << a[i] << " ";
}
return 0;
}