首页 > 编程语言 > 详细

归并排序

时间:2015-07-18 18:28:11      阅读:165      评论:0      收藏:0      [点我收藏+]

一 归并排序

  归并排序采用分治策略,对无序数组进行递归二分,二分并排序完后再合并。需要额外的内存空间。

 1 void merge(int *srcArr, int *tmpArr, int startIdx, int midIdx, int endIdx)
 2 {
 3     int i = startIdx;
 4     int j = midIdx+1;
 5     int k = startIdx;
 6 
 7     while (i<=midIdx && j<=endIdx)
 8     {
 9         if (srcArr[i] < srcArr[j])
10             tmpArr[k++] = srcArr[i++];
11         else
12             tmpArr[k++] = srcArr[j++];
13     }
14     while (i<=midIdx)
15             tmpArr[k++] = srcArr[i++];
16     while (j<=endIdx)
17             tmpArr[k++] = srcArr[j++];
18     for (int i=startIdx;i<=endIdx;i++)
19         srcArr[i] = tmpArr[i];
20 }
21 
22 void mergeSort(int *srcArr, int *tmpArr, int startIdx, int endIdx)
23 {
24     if (startIdx < endIdx)
25     {
26         int midIdx = (startIdx+endIdx)/2;
27         mergeSort(srcArr, tmpArr, startIdx, midIdx);
28         mergeSort(srcArr, tmpArr, midIdx+1, endIdx);
29         merge(srcArr,tmpArr,startIdx,midIdx,endIdx);
30     }
31 }

 

归并排序

原文:http://www.cnblogs.com/yoleimei/p/4657242.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!