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

归并排序

时间:2014-11-06 19:38:23      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   for   sp   div   log   bs   amp   

归并排序重点在治,即合并两个有序数组:

 1 void merge(int A[], int p, int q, int r)
 2 {
 3     int i = 0, j = 0, k = p;
 4     int m = q - p + 1;
 5     int n = r - q;
 6     int *S = new int[m];
 7     int *T = new int[n];
 8     for (i = 0; i < m; i++)
 9         S[i] = A[p + i]; 
10     for (j = 0; j < n; j++)
11         T[j] = A[q + j + 1]; 
12 
13     i = j = 0;
14     while ((i < m) && (j < n)) 
15         if (S[i] < T[j])
16             A[k++] = S[i++];
17         else
18             A[k++] = T[j++];
19     while (i < m)
20         A[k++] = S[i++];
21     while (j < n)
22         A[k++] = T[j++];
23     
24     delete[] S;
25     delete[] T;
26 }

有了合并以后,merge sort就很简单了。

void merge_sort(int A[], int p, int r)
{
    int q;
    if (p < r)
    {
        q = (p + r) / 2;
        merge_sort(A, p, q);
        merge_sort(A, q + 1, r);
        merge(A, p, q, r);
    }
}

 

归并排序

标签:style   blog   color   for   sp   div   log   bs   amp   

原文地址:http://www.cnblogs.com/ym65536/p/4079556.html

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