数据结构(排序三)
归并排序
利用归并的思想实现的排序方法
二路归并排序原理
- 假设初始序列有n个记录,则可以看成n个有序的子序列,每个子序列的长度为1
- 然后两两归并,得到┌n/2┐个长度为2或1的有序子序列;再次两两归并,...
- 如此重复,直到得到一个长度为n的有序序列为止
#include <stdio.h> #define MAXSIZE 15 void sort(int *s1,int n,int *s2,int m){ int i,j,k=0; int temp[MAXSIZE]; for(i=0,j=0;i<n && j<m;){ if(s1[i]<s2[j]) temp[k++]=s1[i++]; else temp[k++]=s2[j++]; } while(i<n) temp[k++]=s1[i++]; while(j<m) temp[k++]=s2[j++]; for(i=0;i<k;i++){ s1[i]=temp[i]; } } void MergeSort(int a[],int n){ int *s1,*s2,m; if(n>1){ s1=a; m=n/2; s2=s1+m; MergeSort(s1,m); MergeSort(s2,n-m); sort(s1,m,s2,n-m); } } void main(){ int a[]={9,8,7,6,5,4,3,2,1,0},i; MergeSort(a,10); for(i=0;i<10;i++){ printf("%d ",a[i]); } }
相关推荐
koushr 2020-11-12
zhangxiafll 2020-11-13
kikaylee 2020-10-31
范范 2020-10-28
MILemon 2020-10-22
hugebawu 2020-10-12
LauraRan 2020-09-28
shenwenjie 2020-09-24
omyrobin 2020-09-23
guangcheng 2020-09-22
qiangde 2020-09-13
hanyujianke 2020-08-18
晨曦之星 2020-08-14
xiesheng 2020-08-06
KAIrving 2020-08-02
xiesheng 2020-08-02
范范 2020-07-30
chenfei0 2020-07-30