归并排序

来源:互联网 发布:淘宝一分钱秒杀怎么买 编辑:程序博客网 时间:2024/05/16 08:51
    void merge(int *a, int low, int mid, int high){        vector<int> temp(high - low + 1);        int i = low, j = mid + 1, k;        for(k = 0; i <= mid && j <= high; ++k){            if(a[i] <= a[j]){                temp[k] = a[i];                ++i;            }            else{                temp[k] = a[j];                ++j;            }        }        if(i > mid){            while(j <= high)                temp[k++] = a[j++];        }        else{            while(i <= mid)                temp[k++] = a[i++];        }        for(i = low, k = 0; i <= high && k < temp.size(); ++i, ++k)            a[i] = temp[k];    }    void mergeSort(int *a, int low, int high){        if(low < high){            int mid = (high - low) / 2 + low;            mergeSort(a, low, mid);            mergeSort(a, mid + 1, high);            merge(a, low, mid, high);        }    }
0 0
原创粉丝点击