以上图片来自天勤数据结构,以下代码***非天勤数据结构提供的代码;***
#include <iostream>
using namespace std;
void quickSort(int *R, int low, int high)
{
if (low >= high)
return;
//一般以序列中的第一个数字作为枢轴:R[low]
int i = low;
int j = high;
int center = R[low];
int flag = 1; //flag表示i,j的移动方向
//1表示j向左移动,0表示i向右移动
while (i < j)
{
if (flag == 1)
{
if (R[j] < center)
{
R[i] = R[j];
++i;
flag = 0; //改变方向,由i向右移动
}
else
--j;
}
else
{
if (R[i] > center)
{
R[j] = R[i];
--j;
flag = 1; //改变方向,由j向左移动
}
else
++i;
}
}
R[i] = center;
quickSort(R, low, i - 1);
quickSort(R, i + 1, high);
}
int main()
{
//快速排序
int R[] = {38, 2, 56, 17, 65, 23, 21, 28};
int n = 8;
quickSort(R, 0, n - 1);
//排序已完成,打印出来
for (int i = 0; i < n; ++i)
cout << R[i] << endl;
return 0;
}
- 平均时间复杂度O(nlog2n)