java排序 歸併排序

2021-09-21 05:40:55 字數 1442 閱讀 6909

歸併排序的基本思想是:

歸併排序(merge-sort)是建立在歸併操作上的一種有效的排序演算法,該演算法是採用分治法(divide and conquer)的乙個非常典型的應用。將已有序的子串行合併,得到完全有序的序列;即先使每個子串行有 序,再使子串行段間有序。若將兩個有序表合併成乙個有序表,稱為二路歸併。

歸併排序基本步驟**

歸併排序的特性:

1丶時間複雜度:o(n*logn)

2丶空間複雜度:o(n)

3丶穩定性:穩定

下面是**實現:

public static void merge(int array,int start,int mid,int end)else

}while(start <= mid)

while (start2 <= end)

while (i <= end)

system.out.println(arrays.tostring(array));

}//歸併排序

public static void mergesort(int array,int start,int end )

int mid = (start+end)/2;

mergesort(array,start,mid);//遞迴左邊

mergesort(array,mid+1,end);//遞迴右邊a

//肯定是乙個乙個的有序序列

merge(array,start,mid,end);

}

測試類**:

int array = ;

mergesort(array,0,array.length-1);

system.out.println(arrays.tostring(array));

下面是執行結果:

以上就是幾種比較基礎並且非常重要的排序。

除此之外,還有比較特殊的排序,比如不需要比較的計數排序,還有變魔術一般的基數排序,通過入桶和出桶進行排序。

下面是幾種基礎排序的特性總結:

歸併排序(Java) 排序

原理 實現 public static void main string args mergesort arr,0,arr.length 1 for int i 0 i arr.length i 歸併排序 最壞情況 o nlogn param arr param lo param hi public...

歸併排序(java)

基本排序 歸併 merge 排序法是將兩個 或兩個以上 有序表合併成乙個新的有序表,即把待排序序列分為若干個子串行,每個子串行是有序的。然後再把有序子串行合併為整體有序序列。public class mergingsort return data 將陣列中left center,center 1 r...

Java 歸併排序

歸併排序 英語 merge sort 或mergesort 是建立在歸併操作上的一種有效的 排序演算法 時間複雜度為 o n log n 穩定排序。1945年由 約翰 馮 諾伊曼 首次提出。該演算法是採用 分治法 divide and conquer 的乙個非常典型的應用,且各層分治遞迴可以同時進行...