//根据算法导论提供的算法,编写程序代码:
#include<iostream>
using namespace std;
//实现对数组的原址排序,关键
int partition(int *A,int p,int r){
int x=A[r];
int i=p-1;
for(int j=p;j!=r;j++)
if(A[j]<=x){
i++;
int temp=A[j];
A[j]=A[i];
A[i]=temp;
}
int temp=A[r];
A[r]=A[i+1];
A[i+1]=temp;
return i+1;
}
void quicksort(int *A,int p,int r){
if(p<r){
int q=partition(A,p,r);
quicksort(A,p,q-1);
quicksort(A,q+1,r);
}
}
int main(int argc,char **argv){
int A[]={2,8,7,1,3,5,6,4};
quicksort(A,0,7);
for(int i=0;i!=8;i++)
cout<<A[i]<<" ";
cout<<endl;
return 0;
}
严蔚敏数据结构快速排序代码如下:
<span style="font-size:18px;">#ifndef QUICKSORT_H
#define QUICKSORT_H
#include <iostream>
using namespace std;
int Partition(int array[],int low,int high){
int key=array[low];
int i=low;
int j=high;
while(i<j){
while(i<j && key<=array[j])
j--;
if(i!=j)
array[i]=array[j];
while(i<j && key>array[i])
i++;
if(i!=j)
array[j]=array[i];
}
//i==j时是枢轴的位置
array[i]=key;
return i;
}
void QuickSort(int array[],int low,int high){
if(low<high){
int keyPostion=Partition(array,low,high);
QuickSort(array,low,keyPostion-1);
QuickSort(array,keyPostion+1,high);
}
}
void TestQucikSort(){
int array[9]={49,48,70,45,65,50,31,60,29};
QuickSort(array,0,8);
for(int i=0;i<9;i++)
cout<<array[i]<<" ";
cout<<endl;
}
#endif</span>