码迷,mamicode.com
首页 > 编程语言 > 详细

【基础】归并排序的实现

时间:2015-04-01 13:15:16      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:

/输入给定数组和长度,进行排序。

/代码还没测试过,如果有朋友帮我找到了BUG,不胜感激。

 1 #define Elmt int
 2 
 3 void merge_sort(Elmt* sqc, int len) {
 4     Elmt t;
 5     Elmt *temp;
 6     int i = 0, j = 0, k = 0;
 7     
 8     if(len == 2) {
 9         if(sqc[0] > sqc[1]) {
10             t = sqc[0];
11             sqc[0] = sqc[1];
12             sqc[1] = t;
13         }
14     }
15     else if(len > 2) {
16         merge_sort(sqc, len / 2);//len == len/2 + len/2 + len%2;
17         merge_sort(&sqc[len / 2], len / 2 + len % 2);
18         temp = (Elmt*)malloc(sizeof(Elmt)*len);
19         while(i != len / 2 || j != (len / 2 + len % 2)) {// 合并序列
20             if(i == len / 2) {
21                 temp[k++] = sqc[len / 2 + j++];
22             }
23             else if(j == (len / 2 + len % 2)) {
24                 temp[k++] = sqc[i++];
25             }
26             else {
27                 if(sqc[len / 2 + j] < sqc[i]) {
28                     temp[k++] = sqc[len / 2 + j++];
29                 }
30                 else {
31                     temp[k++] = sqc[i++];
32                 }
33             }
34         }
35         for(i = 0; i < len; ++i) {
36             sqc[i] = temp[i];
37         }
38         free(temp);
39     }
40 }

 

【基础】归并排序的实现

标签:

原文地址:http://www.cnblogs.com/bread/p/4383500.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!