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

排序 归并排序

时间:2015-03-17 00:37:31      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:

排序 归并排序

排序 归并排序

归并排序相对 快速排序 来说是比较容易写的。代码很简单,甚至比插入排序,冒泡排序等等还容易写

/*
 * CreateTime: 2014-09-14 09:49:11
 */

#include <stdio.h>

void msort(int l, int r);
void merge(int l, int mid, int r);

int a[10] = { 177, 198, 9, 117, 78, 92, 122, 98, 136, 130 };
int aux[10];

int main(void) {
    msort(0, 9);
    for(int i = 0; i < 10; ++i) {
        printf("%d ", a[i]);
    }
    printf("\n");

    return 0;
}

void msort(int l, int r) {
    if(l < r) {
        int mid = l + (r - l) / 2; // int mid = (r + l) / 2;
        msort(l, mid);
        msort(mid+1, r);
        merge(l, mid, r);
    }
}

void merge(int l, int mid, int r) {
    int i = l;
    int j = mid + 1;

    for(int t = l; t <= r; t++) {
        aux[t] = a[t];
    }

    for(int t = l; t <= r; t++) {
        if(i > mid) {       // l side is full
            a[t] = aux[j++];
        } else if(j > r) {  // r side is full
            a[t] = aux[i++];
        } else if(aux[i] < aux[j]) {
            a[t] = aux[i++];
        } else if(aux[i] >= aux[j]){
            a[t] = aux[j++];
        }
    }
}

排序 归并排序

标签:

原文地址:http://www.cnblogs.com/sunznx/p/4343160.html

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