国产探花免费观看_亚洲丰满少妇自慰呻吟_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];    }  }

歸并算法示意圖:

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 林西县| 铁岭县| 彰武县| 抚顺县| 天门市| 陕西省| 姚安县| 山东省| 岚皋县| 大宁县| 玛纳斯县| 汾阳市| 灵台县| 怀安县| 海晏县| 肇东市| 康乐县| 永寿县| 平度市| 会昌县| 安图县| 车险| 寻乌县| 宁晋县| 赤水市| 化德县| 肥西县| 平湖市| 云浮市| 炉霍县| 台南市| 边坝县| 昭通市| 石嘴山市| 盘锦市| 莆田市| 西青区| 莱阳市| 叶城县| 凤冈县| 玛沁县|