c_cpp 合并排序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 合并排序相关的知识,希望对你有一定的参考价值。
#include<stdio.h>
void merge(int* a, int s, int m, int e){
int n1 = m-s+1, n2 = e-m;
int L[n1],R[n2],i;
for(i=0; i<n1; i++)
L[i] = a[s+i];
for(i=0; i<n2; i++)
R[i] = a[m+1+i];
i=0;
int j=0,k=s;
while(i<n1 && j<n2){
if(L[i] <= R[j]){
a[k] = L[i];
i++;
}
else{
a[k] = R[j];
j++;
}
k++;
}
while(i < n1){
a[k] = L[i];
i++;
k++;
}
while(j < n2){
a[k] = R[j];
j++;
k++;
}
}
void mergesort(int* a, int s, int e){
if(s >= e) return;
int m = s + (e-s)/2;
mergesort(a,s,m);
mergesort(a,m+1,e);
merge(a,s,m,e);
}
int main(){
int n;
printf("Enter size of array\n");
scanf("%d",&n);
int a[n],i;
printf("Enter elements of array\n");
for(i=0; i<n; i++)
scanf("%d",a+i);
mergesort(a,0,n-1);
printf("Sorted array:\n");
for(i=0; i<n; i++)
printf("%d ",a[i]);
return 0;
}
以上是关于c_cpp 合并排序的主要内容,如果未能解决你的问题,请参考以下文章
c_cpp 合并排序
c_cpp 合并排序
c_cpp 合并排序
c_cpp 合并排序
c_cpp 合并数组排序
c_cpp 21.合并两个排序列表