堆排序基本思路

2021-09-11 08:11:17 字數 782 閱讀 4945

前提:

1、不建立新的空間,只在當前帶排序陣列arr中做處理;

2、公升序,大頂堆。

思路:1、首先建立大頂堆。建立大頂堆的過程(heapinsert)是自下而上不斷調整新加入元素的位置;

2、交換首次建立好大頂堆的首尾元素(最大元素沉底,這也是為什麼利用大頂堆做公升序),同時用於重建大頂堆的arr尺寸減1(因為最後乙個元素已經最大,不參加構建大頂堆);

3、由於將末尾的元素調整了位置,所以此時不符合大頂堆條件,需要重新調整以建立新的大頂堆(heapify)

package 堆排;

public class heapsort ;

// 首先建立大頂堆,從arr中乙個乙個加入元素

for(int i=0;i0)

for(int i=0;iarr[left] ? left+1 : left;

// 再父子比

largest = arr[i]>arr[largest] ? i : largest;

if(largest==i) break;

swap(arr, i, largest);

// 繼續往下檢查

i = largest;

left = 2*i+1;

} } // 從下往上調整建立的大頂堆

private static void heapinsert(int arr, int i)

} private static void swap(int arr, int i, int j)

}

快速排序基本思路

尊重原創,原文鏈結 今天看到大神寫的一篇快速排序的部落格,肅然起敬,覺得原來快速排序這麼簡單 下面進行簡單的試試 快速排序的基本思想是 1 先從數列中取出乙個數作為基準數 2 分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊 3 再對左右區間重複第二步,直到各區間只有乙個數...

python unittest基本思路

unittest是python中的單元測試框架,但也可以作為selenium自動化測試框架。基本思路主要分為以下三步 1.設計測試用例,注意點主要是要包含測試類和測試方法 class unittest class unittest.testcase 必須包含unittest模組下的testcase類...

秒殺程式基本思路

做秒殺活動的時候,最難應付的應該是在開始秒殺的那一瞬間,如何解決成千上萬個使用者同時造成的高併發問題。只有較好地解決這些問題,才能讓你的程式 在這麼多秒殺使用者中,找到真正的秒殺得主。雖然之前做的秒殺活動最多的併發數也就在幾十個,不過,還是積累了一些經驗,在此記錄並分享出來,希望對其他開 發秒殺產品...