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

归并排序

时间:2015-07-18 18:30:21      阅读:122      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!