快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。
该方法的基本思想是:
1.先从数列中取出一个数作为基准数。
2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。
3.再对左右区间重复第二步,直到各区间只有一个数。
<pre name="code" class="cpp">#include <iostream>
using namespace std;
int partition(int number[],int start,int end){
int temp=number[start];
while(start<end){
while(start<end && number[end]>temp)
--end;
if(start < end)
number[start++] = number[end];
while(start<end && number[start]<temp)
start++;
if(start<end)
number[end--] = number[start];
number[start]=temp;
}
return end;
}
void QuickSort(int * number,int start,int end){
if(start < end){
int num=partition(number,start,end);
QuickSort(number,start,num-1);
QuickSort(number,num+1,end);
}
}
int main(){
int a[4]={2,1,4,3};
QuickSort(a,0,3);
for(int i=0;i<4;i++){
printf("%d ",a[i]);
}
return 0;
}
运行结果: