拜託,面試別再問我計數排序了!!!

2021-09-20 00:05:33 字數 972 閱讀 8571

(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 通過乙個...