数据结构(排序三)
标签:二路归并 ++ fine print ges 重复 实现 数据 lse
归并排序
利用归并的思想实现的排序方法
二路归并排序原理
- 假设初始序列有n个记录,则可以看成n个有序的子序列,每个子序列的长度为1
- 然后两两归并,得到┌n/2┐个长度为2或1的有序子序列;再次两两归并,...
- 如此重复,直到得到一个长度为n的有序序列为止
1 #include 2 #define MAXSIZE 15
3
4 void sort(int *s1,int n,int *s2,int m){
5 int i,j,k=0;
6 int temp[MAXSIZE];
7 for(i=0,j=0;im;){
8 if(s1[i]s2[j])
9 temp[k++]=s1[i++];
10 else
11 temp[k++]=s2[j++];
12 }
13 while(in)
14 temp[k++]=s1[i++];
15 while(jm)
16 temp[k++]=s2[j++];
17 for(i=0;i){
18 s1[i]=temp[i];
19 }
20 }
21
22 void MergeSort(int a[],int n){
23 int *s1,*s2,m;
24 if(n>1){
25 s1=a;
26 m=n/2;
27 s2=s1+m;
28 MergeSort(s1,m);
29 MergeSort(s2,n-m);
30 sort(s1,m,s2,n-m);
31 }
32 }
33
34 void main(){
35 int a[]={9,8,7,6,5,4,3,2,1,0},i;
36 MergeSort(a,10);
37 for(i=0;i10;i++){
38 printf("%d ",a[i]);
39 }
40 }
数据结构(排序三)
标签:二路归并 ++ fine print ges 重复 实现 数据 lse
原文地址:https://www.cnblogs.com/TianLiang-2000/p/12894011.html
文章来自:
搜素材网的
编程语言模块,转载请注明文章出处。
文章标题:
数据结构(排序三)
文章链接:http://soscw.com/index.php/essay/45193.html
评论