(radix sort)
,還有計數排序(counting sort)
。今天,1分鐘,通過幾幅圖,爭取讓大家搞懂計數排序。 。
空間大小為o(max-min)
,用來儲存所有元素出現次數(「計數」)。
:掃瞄待排序資料
arr[n]
,使用計數陣列
counting[max-min]
,對每乙個
arr[n]
**現的元素進行計數;
:掃瞄計數陣列
counting
,還原arr[n]
,排序結束;
排序的元素在[0, 10]之間
,可以用
counting[0,10]
來儲存計數。
arr[n]
,對每乙個出現的元素進行計數。
counting[0, 10]
會變成上圖中的樣子,如
粉色示意
,6這個元素在
arr[n]
**現了4次,在
counting[0, 10]
中,下標為6的位置計數是4。
counting[0, 10]
,通過每個元素的計數,還原
arr[n]。
count[0, 10]下標為6的位置計數是4,排完序是4個連續的6。
arr[n]
時,排序結束。
(counting sort)
,總結:
● 當待排序元素個數很多,但值域範圍很窄時,計數排序是很節省空間的;
原文發布時間為:2018-10-22
」。
拜託,面試別再問我跳表了!
跳表是乙個隨機化的資料結構,實質就是一種可以進行二分查詢的有序鍊錶。跳表在原有的有序鍊錶上面增加了多級索引,通過索引來實現快速查詢。跳表不僅能提高搜尋效能,同時也可以提高插入和刪除操作的效能。考慮乙個有序鍊錶,我們要查詢3 7 17這幾個元素,我們只能從頭開始遍歷鍊錶,直到查詢到元素為止。上述這個鍊...
拜託,面試別再問我TopK了!!!
除非校招,我在面試過程中從不問topk這個問題,預設大家都知道。將n個數排序之後,取出最大的k個 即為所得。sort arr,1,n return arr 1,k o n lg n 明明只需要topk,卻將全域性都排序了,這也是這個方法複雜度非常高的原因。那能不能不全域性排序,而只區域性排序呢?這就...
拜託,面試別再問我時間複雜度了!!!
分為這麼幾步 先做一次partition 左半區遞迴 右半區遞迴 partition arr,low,high quick sort arr,low,i 1 quick sort arr,i 1,high 通過了乙個中間變數t,進行了3次操作,交換了a和b的值,swap的時間複雜度是o 1 通過乙個...