美文网首页
归并排序

归并排序

作者: Luxin23 | 来源:发表于2018-01-19 10:42 被阅读8次

    对一个数组排序,可以将数组(递归)的分成两半进行排序,然后将结果合并起来。

    #include <iostream>
    using namespace std;
    
    int aux[10];
    void merge(int a[], int l, int mid, int r){
        int i = l, j = mid + 1;
        for(int k = l; k <= r; k++){
            aux[k] = a[k];
        }
        for(int k = l; k <= r; k++){
            if(i > mid){
                a[k] = aux[j++];
            }else if(j > r){
                a[k] = aux[i++];
            }else if(aux[i] > aux[j]){
                a[k] = aux[j++];
            }else{
                a[k] = aux[i++];
            }
        }
    }
    
    void mergeSort(int a[], int l, int r){
        if (l >= r) return;
        int mid = l + (r - l) / 2;
        mergeSort(a, l, mid);
        mergeSort(a, mid + 1, r);
        merge(a, l, mid, r);
    }
    int main(){
        int a[10] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
        mergeSort(a, 0, 9);
        return 0;
    }
    
    

    相关文章

      网友评论

          本文标题:归并排序

          本文链接:https://www.haomeiwen.com/subject/lcjgoxtx.html