国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java實現歸并排序算法

2019-11-26 15:13:29
字體:
來源:轉載
供稿:網友

歸并排序算法思想:
分而治之(divide - conquer);每個遞歸過程涉及三個步驟
第一, 分解: 把待排序的 n 個元素的序列分解成兩個子序列, 每個子序列包括 n/2 個元素.
第二, 治理: 對每個子序列分別調用歸并排序MergeSort, 進行遞歸操作
第三, 合并: 合并兩個排好序的子序列,生成排序結果.

public static void mergeSort(int[] a, int[] tmp, int left, int right) {    if (left < right) {      int mid = left + (right - left) / 2;      mergeSort(a, tmp, left, mid);// 左排序      mergeSort(a, tmp, mid + 1, right);// 右排序      merge(a, tmp, left, mid + 1, right);// 左右合并    }  }public static void merge(int[] a, int[] tmp, int left, int rightPos,      int right) {    int leftEnd = rightPos - 1;    int tmpPos = left;    int num = right - left + 1;    while (left <= leftEnd && rightPos <= right) {      if (a[left] < a[rightPos]) {        tmp[tmpPos++] = a[left++];      } else {        tmp[tmpPos++] = a[rightPos++];      }    }    while (left <= leftEnd) {      tmp[tmpPos++] = a[left++];    }    while (rightPos <= right) {      tmp[tmpPos++] = a[rightPos++];    }    for (int i = 0; i < num; i++, right--) {      a[right] = tmp[right];    }  }

歸并算法示意圖:

以上所述就是本文的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 巴里| 新泰市| 临澧县| 锡林郭勒盟| 福州市| 宜州市| 台湾省| 道真| 沙坪坝区| 高淳县| 凌云县| 龙陵县| 永善县| 仁化县| 孝昌县| 西峡县| 赤水市| 焦作市| 鄂尔多斯市| 汝南县| 铜鼓县| 高雄市| 沿河| 象山县| 大渡口区| 吉隆县| 陕西省| 青州市| 望谟县| 建德市| 诸暨市| 鄂托克前旗| 肇东市| 江山市| 南皮县| 普洱| 延安市| 晋城| 高邑县| 中阳县| 翁牛特旗|