快速排序的递归程序

#include<iostream>

using namespace std;

 

int count;

int QS(int *q, int left,int right){

   

int key = q[left];

     while(left < right){

while((q[right] > key)  && (right > left))

--right;

q[left] = q[right];

while((q[left] < key) && (left < right))

++left;

q[right] = q[left]; 

}

q[left] = key;

return left;

}

void qsort(int *q,int left,int right,int n )

{

int pivottag;

for(int i = 0;i<n;i++)

cout<<q[i]<<" ";

cout<<endl;

if(left < right)

{   

pivottag = QS(q,left,right);

                qsort(q,left,pivottag-1,n);

qsort(q,pivottag+1,right,n);

 

 

}

}

 

void quicksort(int *q,int n,int k)

{

qsort(q,0,n,k);

}

 

 

 

int main()

{

int num;

cout<<"请输入总数"<<endl;

cin>>num;

int *p = new int[num];

cout<<"请输入数据,中间以空格分开"<<endl;

for(int i = 0;i < num;i++)

cin>>p[i];

quicksort(p,num-1,num);

 

}

快速排序是目前世界上平均时间度最小的排序方法,其本思想是靠着选择中间值,进行比对替换。

快速排序是一般学生必须掌握的算法,希望大家能有所参考。

你可能感兴趣的:(快速排序的递归程序)