#include<stdio.h>
#include<stdlib.h>
#define maxsize 1024
//快速排序算法
using namespace std;
int Partition(int R[],int low,int high){//快速排序每一趟的具体操作
int pivot=R[low];
while(low<high){
while(low<high&&R[high]>pivot){//从右向左扫描
high-=1;
}
if(low<high){//交换第一个比首项小的元素至下标low
R[low]=R[high];
low+=1;
}
while(low<high&&R[low]<pivot){//从左向右扫描
low+=1;
}
if(low<high){//交换第一个比首项大的元素至下标high
R[high]=R[low];
high-=1;
}
}
R[low]=pivot;//此时必有low=high,再把首项添加入数组即可
return low;//返回下标的值
}
void QuickSort(int R[],int s,int t){//快速排序的递归算法
int i;
if(s<t){
i=Partition(R,s,t);//进行一次排序
QuickSort(R,s,i-1);//以第一次排序的结果为基准,前后分别再排序,直到全部序列有序
QuickSort(R,i+1,t);
}
}
int R[maxsize]={0};
int main(void){
int n;
scanf("%d",&n);
int i;
for(i=1;i<=n;i++){
scanf("%d",&R[i]);
}
QuickSort(R,1,n);
for(i=1;i<n;i++){
printf("%d ",R[i]);
}
printf("%d",R[i]);
return 0;
}
快速排序C语言代码
于 2023-03-07 14:44:22 首次发布