線性時間排序習題

2021-06-16 20:36:33 字數 1255 閱讀 9961

1.設計乙個演算法,對n個介於0~k之間的數進行預處理,然後能夠在o(1)的時間給出有多少個元素介於[a,b]之間

首先肯定要考慮a,b和k的相對大小,這裡就假設01.參照級數排序累計統計

2.對累計統計的結果中計算c[b]-c[a-1]

2.插入排序,歸併排序,堆排序和快速排序那些是穩定的,有沒有一種方法保證任何排序都是穩定的

首先插入排序和歸併排序時穩定的,另外兩個是不穩定的

對於快速排序,解決辦法是申請一塊與待分割元素相同大小的空間,在每一次pation過程中,掃瞄兩次

第一次掃瞄比主元小的元素,第二次掃瞄比主元大地元素,耗時o(2n),這樣就保證了穩定性

對於堆排序,為每個元素申請乙個額外的空間記錄他們的初始位置,比較的時候先比較元素的大小,相同然後比較位置的大小,需要申請o(n)的空間

3.乙個包含n條記錄的陣列,每條記錄為0或1,對其進行排序

問:

a.分別給出滿足條件(1,2),(1,3),(2,3)的演算法

b.以上的三個演算法中有無用於計數排序中的列排序方法,使得在b為關鍵字的n條記錄排序時間為o(bn)

c.假設有n條記錄他們的範圍為0~k,修改計數排序,使得在用時o(n+k),空間o(k)的情況下原址排序

a.滿足(1,2)------歸併排序             滿足(1,3)----------快速排序中的一次劃分           滿足(2,3)--------插入排序

b.計數排序要求穩定,並且時間為o(n),歸併排序滿足條件

c.陣列c為計數排序中累計統計後的位置

for i =length to 1

4.水壺問題

有n個藍水壺和相同數量的紅水壺,每個藍水壺容量都不同,且有乙個紅水壺水壺與之對應

問怎麼在o(n^2)時間配對,o(nlogn)呢?證明比較次數下界o(nlogn)

在o(n^2)時間配對------選擇排序思想,每次選乙個藍水壺,挨個比較

o(nlogn)---快速排序思想首先選乙個藍水壺,對其劃分,會得到三種水壺

容量比它大,小或者相等,然後取與它相同的紅水壺對藍水壺進行劃分

證明下界同決策樹

線性時間排序

public void radixsort int a a k key 我們前面提到的方法,基本上都是比較排序,本篇介紹三種非比較型別的排序,計數排序 基數排序 桶排序,比較排序的最壞的情況都是經過nlgn的,線性排序的時間複雜度基本上都是線性關係。1.計數排序 計數排序不是通過元素之間的比較,而是...

線性時間排序

在最壞情況下任何比較排序演算法都需要做 nlgn 次比較 計數排序 假設輸入的資料都屬於乙個小區間內的整數 counting sort a,b,k 1.let c 0.k be a new array 2.for i 0 to k 3.c i 0 4.for j 1 to a.length 5.c ...

線性時間排序

決策樹模型 用處 證明基於比較的排序的時間複雜度為 nlgn 簡單描述 二叉樹,有n 個葉節點,則此樹在最茂盛的時候有最小的高度h lg n nlgn 因此至少需要nlgn次比較 計數排序 描述 對n個位於區間 0,k 的元素進行排序,複雜度為o n k 的穩定排序 c 11 include inc...