前言:
今天覆習了一下排序演算法,堆排序寫的不太熟練,所以在這裡記錄一下,方便以後的學習。
就是實現堆排序。
基本思路:將待排序序列構造成乙個大頂堆,此時,整個序列的最大值就是堆頂的根節點。將其與末尾元素進行交換,此時末尾就為最大值。然後將剩餘n-1個元素重新構造成乙個堆,這樣會得到n個元素的次小值。如此反覆執行,便能得到乙個有序序列了。
package quicksort;
/** * 堆排序 : 時間複雜度 最好最壞平均複雜度都為o(nlogn)
*/public
class
main
; main.
heapsort
(array)
;for
(int i =
0; i < array.length; i++)}
private
void
swap
(int
array,
int len)
public
void
heapsort
(int
array)
}public
void
heap
(int
array,
int len)
}//先判斷右子樹if(
(2*i+2
)< array[
2*i+2]
)}}}
}
每日一道演算法題 奇偶排序
題目 在乙個n個整數陣列裡面,有多個奇數和偶數,設計乙個演算法,令所有的奇數都在偶數左邊。解題思路 想到的第乙個思路是定義兩個指標,第乙個指標p指向陣列的第乙個元素,第二個指標q指向陣列的最後乙個元素,然後讓p向後遍歷,讓q向前遍歷,直到p找到第乙個偶數,q找到第乙個奇數,交換兩個元素,繼續讓兩個指...
每日一道演算法題
no.1 設指標變數fron t表示鏈式佇列的隊頭指標,指標變數rear表示鏈式佇列的隊尾指標,指標變數s指向將要入佇列的結點x,則入佇列的操作序列為 a.front next s front s b.s next rear rear s crear next s rear s d.s next f...
每日一道演算法題
no.1 若有 18 個元素的有序表存放在一維陣列 a 19 中,第乙個元素放 a 1 中,現進行二分查詢,則查詢 a 3 的比較序列的下標依次為 a.1,2,3 b.9,5,2,3 c.9,5,3 d.9,4,2,3 答案 d.第一次查詢,隊首為下標1,隊尾下標18,所以是 1 18 2 9 第二...