原理
- 采用了分治的思想
步骤
稳定性 : 稳定的
- 时间复杂度
- 最优、平均、最坏复杂度均为
代码
public void merge_sort(int[] a, int left, int right) {if (right - left + 1 <= 1) {return;}int mid = left + (right - left) / 2;merge_sort(a, left, mid);merge_sort(a, mid + 1, right);int[] tmp = new int[right - left + 1];int l = left;int r = mid + 1;int num = 0;for (int i = 0; i < tmp.length && l <= mid && r <= right; i++) {if (a[l] < a[r]) {tmp[num++] = a[l++];} else {tmp[num++] = a[r++];}}while (l <= mid) {tmp[num++] = a[l++];}while (r <= right) {tmp[num++] = a[r++];}for (int i = 0; i < tmp.length; i++) {a[left + i] = tmp[i];}}
- 最优、平均、最坏复杂度均为
