為面試做準備之計數排序

2021-06-19 10:43:24 字數 755 閱讀 4574

計數排序的優點是 1>.時間複雜度是o(n). 2>.穩定。缺點是空間複雜度是o(n)。

計數排序無需需要乙個輔助陣列,和乙個輸出陣列。

輔助陣列先存放輸入陣列中每個數字的個數,然後修改為相同陣列的最後乙個的位置。

實現時需要注意兩點:1>.在輸入最大數字k時,分配輔助陣列需分配k+1個空間。2>. 由於最後在輔助陣列中存放的是以個數計算得到的值,所以寫入輸出陣列中時,需要減去1.

void countingsort(int a, int b, int k, int n)   //a是輸入陣列,b是輸出陣列,k是a中最大的數字,n是a中數字個數

//在c[k]中計數

for(int j = 0; j < n; ++j)

//計算每類數字的最後乙個的位置

for(int i = 1; i < k+1; ++i)

//對a重新排序寫入b中

for(int j = n-1; j >= 0; --j)

}

計數排序本質是通過計算無序集合中整數出現的次數來決定集合應該如何排序的。

計數排序的時間複雜度為o(n+k),其中n為要排序的元素的個數,k為a[n]中最大的整數加1。

這是由於計數排序包含三個迴圈,其中兩個的執行時間正比於n,另乙個的執行時間正比於k。

對於空間上來說,計數排序需要兩個大小為n的陣列,乙個大小為k的陣列。

為實習筆試做準備

1.二叉樹遍歷 前序 根 左 右 中序 左 根 右 後序 左 右 根 一般題目會給出後序,記住最後乙個為根節點,然後慢慢推導左右子樹 2.霍夫曼編碼 霍夫曼 huffman 編碼屬於碼詞長度可變的編碼類,是霍夫曼在1952年提出的一種編碼方法,即從下到上的編碼方法。同其他碼詞長度可變的編碼一樣,可區...

Linux面試複習!為你的春招做準備!

table of contentsgenerated with doctoc cpu central processing unit 是一塊超大規模的積體電路板,是計算機的核心部件,承載著計算機的主要運算和控制功能,是計算機指令的最終解釋模組和執行模組。我們知道檔案都有檔名與資料,這在 linux ...

雙向迴圈鍊錶(為STL LIST 做準備)

struct list struct list 鍊錶構建容易錯誤的地方在於插入和刪除。插入 我們把n節點插入p節點之後。需要1.用n的next指標指向p的下乙個節點l。2用l的prev指標指向n。3.用n的prev指標指向p。刪除 刪除時我們一般 1.建立乙個指標tmp指向所要刪除的p節點的下乙個節...