归并排序

    xiaoxiao2026-04-08  7

    // 将a[lo ... mid]和a[mid+1 ... hi]归并 void merge(int a, int lo, int mid, int hi) { int i = lo; int j = mid + 1; for (int k = lo; k <= hi; k++) aux[k] = a[k]; for (int k = lo; k <= hi; k++) if (i > mid) // mid左边归并完毕 a[k] = aux[j++]; else if (j > hi) // mid右边归并完毕 a[k] = aux[i++]; else if (aux[j] < aux[i]) a[k] = aux[j++]; else a[k] = aux[i++]; } // void sort(int a[], int lo, int hi) { if (hi <= lo) return; int mid = lo + (hi - lo)/2; sort(a, lo, mid); sort(a, mid + 1, hi); merge(a, lo, mid, hi); }
    转载请注明原文地址: https://ju.6miu.com/read-1308621.html
    最新回复(0)