归并排序

来源:互联网 发布:公司网络监控手机qq 编辑:程序博客网 时间:2024/05/23 13:59
这算法好久没看,都忘了。算法看上去简单,用代码实现一下。
void Merge(int r[], int r1[], int s, int m, int t) {    int i = s;    int j = m + 1;    int k = s;    while (i <= m && j <= t) {        if (r[i] <= r[j]) {            r1[k++] = r[i++];        } else {            r1[k++] = r[j++];        }    }        while (i <= m) {        r1[k++] = r[i++];    }        while (j <= m) {        r1[k++] = r[j++];    }}void MergeSort(int r[], int s, int t) {    int m;    int r1[400];    if (s == t) {        return;    } else {        m = (s + t) / 2;        MergeSort(r, s, m);        MergeSort(r, m+1, t);        Merge(r, r1, s, m, t);        for (int i = s; i <= t; i++) {            r[i] = r1[i];        }    }}

0 0
原创粉丝点击