中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java排序算法之歸并排序簡單實現

發布時間:2020-09-08 14:46:38 來源:腳本之家 閱讀:150 作者:zengzhihua 欄目:編程語言

算法描述:對于給定的一組記錄,首先將每兩個相鄰的長度為1的子序列進行歸并,得到 n/2(向上取整)個長度為2或1的有序子序列,再將其兩兩歸并,反復執行此過程,直到得到一個有序序列。

package sorting;
/**
 * 歸并排序
 * 平均O(nlogn),最好O(nlogn),最壞O(nlogn);空間復雜度O(n);穩定;較復雜
 * @author zeng
 *
 */
public class MergeSort {
	public static void merge(int[] a, int start, int mid,
	      int end) {
		int[] tmp = new int[a.length];
		System.out.println("merge " + start + "~" + end);
		int i = start, j = mid + 1, k = start;
		while (i != mid + 1 && j != end + 1) {
			if (a[i] < a[j])
			        tmp[k++] = a[i++]; else
			        tmp[k++] = a[j++];
		}
		while (i != mid + 1)
		      tmp[k++] = a[i++];
		while (j != end + 1)
		      tmp[k++] = a[j++];
		for (i = start; i <= end; i++)
		      a[i] = tmp[i];
		for (int p : a)
		      System.out.print(p + " ");
		System.out.println();
	}
	static void mergeSort(int[] a, int start, int end) {
		if (start < end) {
			int mid = (start + end) / 2;
			mergeSort(a, start, mid);
			// 左邊有序
			mergeSort(a, mid + 1, end);
			// 右邊有序
			merge(a, start, mid, end);
		}
	}
	public static void main(String[] args) {
		int[] b = { 49, 38, 65, 97, 76, 13, 27, 50 };
		mergeSort(b, 0, b.length - 1);
	}
}

運行結果看一下:

Java排序算法之歸并排序簡單實現

總結

以上就是本文關于Java排序算法之歸并排序簡單實現的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

翁源县| 磐石市| 开封县| 丰宁| 紫金县| 兰溪市| 恭城| 正定县| 久治县| 连城县| 汪清县| 平舆县| 昆山市| 汝阳县| 东城区| 邵阳县| 四川省| 玉龙| 深泽县| 永善县| 盖州市| 河津市| 军事| 子洲县| 祁东县| 富裕县| 资讯| 斗六市| 蒙阴县| 台北市| 合山市| 长海县| 印江| 木兰县| 定南县| 隆尧县| 普陀区| 天全县| 精河县| 右玉县| 黄骅市|