已知下列各種初始狀態(tài)(長度為n)的元素,試問當(dāng)利用直接插入排序進(jìn)行排序時,至少需要進(jìn)行多少次比較(要求排序后的記錄由小到大順序排列)?
⑴關(guān)鍵碼從小到大有序(key1< key2< …< keyn)。
⑵關(guān)鍵碼從大到小有序(key1> key2 >…> keyn)。
⑶奇數(shù)關(guān)鍵碼順序有序,偶數(shù)關(guān)鍵碼順序有序(key1< key3< …,key2key4…)。
⑷前半部分元素按關(guān)鍵碼順序有序,后半部分元素按關(guān)鍵碼順序有序,即:(key1< key2< …< keym,keym+1<
keym+2 <…)
判別下列序列是否為堆,如不是,按照堆排序思想把它調(diào)整為堆,用圖表示建堆的過程。
⑴(1,5,7,25,21,8,8,42)
⑵(3,9,5,8,4,17,21,6)
序列⑴是堆,序列⑵不是堆,調(diào)整為堆(假設(shè)為大根堆)的過程如下圖所示。