在各排序算法中,由C.A.R.Hoare提出的快速排序方法的平均时间性能最好,在插入排序中,根据已排序的字文件,把控制当前插入操作的关键字K放到正确的位置上。与插入排序不同的是,快速排序根据整个文件,把控制当前排序进程的基准关键字放到正确的位置上。在快速排序中,如果把关键字k防止在位置s(i)处,那么,当j<s(i)时,则有Kj<K(si)
,而当j〉s(j)时,则有Kj>k(si),因此当把关键字放在S(i)处时,原来的一个文件被分为两个文件。可以对这两个子文件进行独立的相同原理的排序
#include "stdafx.h"
#include<iostream>
using namespace std;
void QuickSort(int list[],int left,int right)
{
int key=list[left];
int i=left;
int j=right+1;
if(left<right)
{
do{
do{
i++;
}while(list[i]<key);
do{
j--;
}while(list[j]>key);
if(i<j)
{
int temp=list[i];
list[i]=list[j];
list[j]=temp;
}
}while(i<j);
int tem=list[left];
list[left]=list[j];
list[j]=tem;
QuickSort(list,left,j-1);
QuickSort(list,j+1,right);
}
}
int main()
{
int list[]={5,8,6,2,9,10};
QuickSort(list,0,5);
for(int i=0;i<6;i++)
{
cout<<list[i]<<" ";
}
}