c语言分治法归并排序
时间: 2023-11-05 13:56:02 浏览: 107
分治法归并排序是一种常见的排序算法,其基本思想是将待排序序列不断地划分成小的子序列,然后逐步合并这些子序列以得到有序的结果。以下是C语言实现归并排序的代码:
```
#include<stdio.h>
#define M 1000
int a[M],b[M];
void merge(int low,int mid,int high){
int i=low,j=mid+1,k=low;
while(i<=mid && j<=high){
if(a[i]<a[j]){
b[k++]=a[i++];
} else{
b[k++]=a[j++];
}
}
while(i<=mid){
b[k++]=a[i++];
}
while(j<=high){
b[k++]=a[j++];
}
for(i=low;i<=high;i++){
a[i]=b[i];
}
}
void mergeSort(int a,int b){
if(a<b){
int mid=(a+b)/2;
mergeSort(a,mid);
mergeSort(mid+1,b);
merge(a,mid,b);
}
}
int main(){
int i,n;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
mergeSort(0,n-1);
for(i=0;i<n;i++){
printf("%d ",a[i]);
}
return 0;
}
```
以上代码实现了一个从小到大排序的归并排序算法。你可以根据需要修改代码以实现从大到小排序。
阅读全文