当前位置: 首页 > 网站开发 > 正文

归并排序

1 星2 星3 星4 星5 星 (1 次投票, 评分: 5.00, 总分: 5)
Loading ... Loading ...
baidu_share
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
void Merge(int array[] , int low , int mid , int high)  
{  
    int i , j , k;  
    int *temp = (int *)malloc((high - low + 1)*sizeof(int));  
    i = low , j = mid + 1 , k = 0;  
    while(i <= mid && j <= high)  
    {  
        if(array[i] < array[j])        // 进行排序存入动态分配的数组中  
            temp[k++] = array[i++];  
        else  
            temp[k++] = array[j++];  
    }  
    while(i <= mid)                    // 如果前一半中还有未处理完的数据,按顺序移入动态分配的数组内  
        temp[k++] = array[i++];  
    while(j <= high)                   // 如果前一半中还有未处理完的数据,按顺序移入动态分配的数组内  
        temp[k++] = array[j++];  
    for(i = low , j = 0; i<= high ; ++i)  
        array[i] = temp[j++];  
    free(temp);  
}  
 
void Msort(int array[] , int low , int high)  
{  
    int mid;  
    if(low < high)  
    {  
        mid = (low + high)>>1;  
        Msort(array , low , mid);  
        Msort(array , mid + 1 , high);  
        Merge(array , low , mid , high);  
    }  
}

本文固定链接: http://www.chepoo.com/merge-sort.html | IT技术精华网

【上一篇】
【下一篇】

归并排序:等您坐沙发呢!

发表评论