定义一个数组,使用快速排序算法将其中的元素按照从小到大的顺序进行排序
#include<stdio.h>
void merge_sort(int* a,int L,int mid,int R);
void process(int* a,int L,int R);
void process(int* a,int L,int R){
if(L==R)
return ;
int mid=L+((R-L)/2);
process(a,L,mid);
process(a,mid+1,R);
merge_sort(a,L,mid,R);
}
void merge_sort(int* a,int L,int mid,int R){
int arr[R-L+1];
int i=L;
int j=mid+1;
int k=0;
while(i<=mid && j<=R){
arr[k++]=(a[i]<a[j])?a[i++]:a[j++];
}
while(i<mid){
arr[k++]=a[i++];
}
while(j<=R){
arr[k++]=a[j++];
}
for(k=L;k<=R;k++){
a[k]=arr[k-L];
}
}
int main(){
int n;
printf("数组长度:");
scanf("%d",&n);
int a[n];
printf("请输入一组数:");
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
process(a,0,n-1);
for(int i=0;i<n;i++){
printf("%d",a[i]);
}
printf("\n");
}