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