#include <iostream>
#include <stdio.h>
using namespace std;
int partition (int * a,int left,int right){
int i=left,j=right+1;
do{
do i++;while(a[i]<a[left]);
do j--;while (a[j]>a[left]);
if(i<j){
int t=a[i];a[i]=a[j];a[j]=t;
}}
while(i<j);
int t=a[left];
a[left]=a[j];
a[j]=t;
return j;
}
void quickSort(int * a, int x,int y){
if(x<y){
int m=partition(a,x,y);
quickSort(a,x,m-1);
quickSort(a,m+1,y);
}
}
int main(){
int n,i;
int a[100];
cout<<"请输入数组的规模n:";
cin>>n;
cout<<"\n请输入要排序的"<<n<<"个元素:" ;
for (i=0;i<n;i++)scanf("%d",&a[i]);
cout<<"\n输出排序前的"<<n<<"个元素:";
for (i=0;i<n;i++)printf("%d ",a[i]);
quickSort(a,0,n-1);
cout<<endl;
cout<<"\n输出排序后的"<<n<<"个元素:";
for (i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n\n\n");
return 0;
}
快速排序(C++)
最新推荐文章于 2024-10-02 23:40:03 发布