3 分鐘學會歸併排序

2021-10-23 01:28:22 字數 1043 閱讀 7052

解題思路:

分解:將待排序分成兩部分,對每部分進行排序

合併:將排序好的部分進行合併

遞迴:

遞推公式:merge_sort(p..q) = merge(merge_sort(p..r),merge_sort(r+1..q))

終止條件:p>=q,分組中元素只剩下 1 個

演算法實現

public class solution 

// 遞迴函式

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

int middle = (start + end) / 2;

// 分解

mergesort(array, start, middle);

mergesort(array, middle + 1, end);

// 合併 array[start..middle]~array[middle+1..end]

merge(array, start, middle, end);

}// 合併兩個有序陣列

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

tempindex++;

}// 將剩餘元素均放入 temparray 中

while (index1 <= middle)

while (index2 <= end)

// 將 temp 陣列的有序元素放到 array 中

for (int i = 0; i < temparray.length; i++)

}public static void main(string args) ;

mergesort(array);

for (int i : array) }}

3分鐘學會氣泡排序

思路 兩個元素比較,大的放到右邊 從頭開始依次比較相鄰的兩個元素,目的是找出最大的乙個元素放到末尾,這個元素不再參與比較 第二次仍然從頭開始,把第二大的元素放到正確的位置 一共比較 len 1 趟,因為已經確定了 len 1 個元素的位置,那麼第 n 個肯定是最小的那個了 第 i 趟的比較次數為 l...

3 分鐘學會插入排序

思路 將待排元素插入到有序陣列中的合適位置,後邊的元素依次向後移動 將陣列分為有序與待排兩個區域 待排區從 1 開始,依次取出每個元素插入有序區,一共進行 n 1 趟 從有序區後面開始比較,有序元素 待排元素,有序元素則向後移動 實現public class solution else j 1 時,...

3分鐘學會sessionStorage用法

前言 是什麼需求呢?需求方要求使用者在乙個列表頁瀏覽時,點選乙個列表進入詳情頁,返回要求記錄使用者剛剛瀏覽的位置,而不是重新重新整理頁面到了頁面頂部。ps 如果使用者好不容易翻到了第幾 十 幾百乃至幾千條時,難道要使用者再重頭開始?可能這個時候跳出率就高了,這個分析的確挺有道理,無力反駁.那麼開始腦...