java資料結構與演算法學習 歸併排序

2021-08-17 07:10:51 字數 921 閱讀 2739

今天我們來記錄一下歸併排序。

歸併排序的主要思想:

將陣列分成兩半,將每一半排好序,然後分別在每一半陣列的開頭設定指標,進行比較,小的就放在輔助陣列中,該指標往下移,直到其中一邊的陣列走到頭,將剩餘的元素拷貝到輔助陣列中,返回陣列就是有序陣列。

根據master公式o(t) = ao(t/b) + o(n^d)可知,a = 2,b = 2,d = 1 。a/b = d,所以歸併排序的時間複雜度是o(n*logn)的。

public class mergesort 

sortprocess(arr, 0, arr.length - 1);

}public static void sortprocess(int arr, int l, int r)

int mid = l + ((r-l) >> 1);//相當於(l + r) / 2,求中點位置

//讓左邊有序

sortprocess(arr, l, mid);

//讓右邊有序

sortprocess(arr, mid + 1, r);

//歸併過程

merge(arr, l, mid, r); }

public static void merge(int arr, int l, int mid, int r) else

} //如果有乙個指標越界了,將另一部分剩餘的元素直接拷貝到輔助陣列中

while(p1 <= mid)

while(p2 <= r)

//將輔助陣列中的元素拷貝會原陣列

for(int j = 0;j}

public static void main(string args) ;

mergesort(arr);

for (int i : arr)

}}

java資料結構與演算法學習 BF演算法

bf演算法 brute force 是一種最基本的模式匹配演算法。bf演算法的實現思想很簡單 從目標串s 的第乙個字元起和模式串t的第乙個字元進行比較,若相等,則繼續逐個比較後續字元,否則從串s的第二個字元起再重新和串t進行比較。依此類推,直至串t 中的每個字元依次和串s的乙個連續的字串行相等,則稱...

資料結構與演算法學習

我想重新學習一下資料結構與演算法,打好基礎。to measure is to know.我們用演算法複雜度t n 來表示演算法的效率,效能。t n 的取值 所有問題規模為n的問題例項中,將他們的計算成本進行總體的比較,取出最壞情況下的值。有幾點需要catch,1.演算法執行的時間,會根據程式語言,作...

資料結構與演算法 學習筆記(12) 歸併排序

菜鳥一枚,剛剛學習資料結構與演算法,為了加深理解,所以與同學們分享學習過程。今天學習的是,歸併排序!上 include void merge int arr,int l,int m,int r 合併兩個陣列 for i m i r i 右邊已排序好的 i 0 int j 0,k l while i ...