快速排序的平均时间复杂度为O(N*logN),在所有内部排序算法中最高,在大部分情况下总是最好的。
今天用一个简单的程序实现一下,是用的递归方法。
第一次写博客,万事开头难。
// quiksort2.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include"iostream"
using namespace std;
void QuickSort(int *, int, int);
int _tmain(int argc, _TCHAR* argv[])
{
int ad[10] = { 2, 3,23, 4 ,8,87};
QuickSort(ad, 0, 5);
for (int i = 0; i <6; i++)
{
cout << ad[i] << " ";
}
system("pause");
return 0;
}
void QuickSort(int a[], int L, int R)
{
int i, j, temp;
i = L;
j = R;
temp = a[L];
if (i > j)//必须要,出不了递归
return;
while (i <j)
{
while (i < j&&a[j] >= temp)
--j;
while (i < j&&a[i] <= temp)
++i;
if (i < j)
{
/*左右扫描,检测出需要交换的值*/
int t = a[i];
a[i] = a[j];
a[j] = t;
}
}
a[L] = a[i];
a[i] = temp;
//递归解决
QuickSort(a, L, i - 1);
QuickSort(a, i + 1, R);
}