数据结构(排序三)

Posted tianliang-2000

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构(排序三)相关的知识,希望对你有一定的参考价值。

归并排序

  利用归并的思想实现的排序方法

二路归并排序原理

  • 假设初始序列有n个记录,则可以看成n个有序的子序列,每个子序列的长度为1
  • 然后两两归并,得到n/2个长度为2或1的有序子序列;再次两两归并,...
  • 如此重复,直到得到一个长度为n的有序序列为止

 

 1 #include <stdio.h>
 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;i<n && j<m;){
 8         if(s1[i]<s2[j])
 9             temp[k++]=s1[i++];
10         else
11             temp[k++]=s2[j++];
12     }
13     while(i<n)
14         temp[k++]=s1[i++];
15     while(j<m)
16         temp[k++]=s2[j++];
17     for(i=0;i<k;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;i<10;i++){
38         printf("%d  ",a[i]);
39     }
40 }

 

以上是关于数据结构(排序三)的主要内容,如果未能解决你的问题,请参考以下文章

20172308 实验三《程序设计与数据结构》查找与排序 实验报告

以下代码片段的时间复杂度是多少?

ElasticSearch学习问题记录——Invalid shift value in prefixCoded bytes (is encoded value really an INT?)(代码片段

算法笔记 排序算法完整介绍及C++代码实现 HERODING的算法之路

排序02-直接插入排序法

markdown 数组排序片段