排序算發 計數排序

2021-10-21 02:44:45 字數 1072 閱讀 8265

前面已經記錄過插入排序,歸併排序,快速排序,堆排序等四種排序。它們都有個共性,就是通過多次比較來得出前後順序,這種叫做比較排序,當然除此之外也有非比較排序。今天記錄的計數排序就是一種非比較排序。

算發思想:有一串資料,如果我們知道每乙個元素公升序在陣列中的第幾個,那麼我們就知道了公升序的結果。而對於如何知道每個元素在陣列中的第幾個,可以建立乙個cout為陣列中最大元素值得陣列a,初始化都為0,然後遍歷陣列,每碰到乙個元素,以此元素為下標對應的a[元素]++;然後遍歷陣列a輸出對應的索引值,多個就輸出多次 輸出結果既是排序後結果。

時間複雜度: 當陣列中最大元素為k時,若k=o(n),執行時間為 θ(nlgn)

c++實現:

// test_1.cpp : 此檔案包含 "main" 函式。程式執行將在此處開始並結束。

//#include

#include

using

namespace std;

#pragma region 計數排序

void

jishusort

(vector<

int>

& list)

for(

int i =

0; i < list.

size()

; i++

)int index =0;

for(

int i =

0; i <

11; i++)}

}#pragma endregion

intmain()

int length = intput_array.

size()

; cout <<

"排序結果為:"

<< endl;

#pragma region 計數排序

jishusort

(intput_array)

;for

(int i =

0; i < length; i++

)#pragma endregion

return0;

}

排序 計數排序

資料結構和演算法系列目錄 不斷更新 計數排序是一種線性時間的排序,它的時間複雜程度為o n 雖然是線性的時間複雜程度,但是它的空間複雜程度比較高,而且用之前需要有乙個硬性的前提。這個前提在後面給出,這裡先來簡單介紹一下計數排序。計數排序是先掃瞄一邊待排序陣列,並用乙個輔助陣列記錄待排序每個元素應該在...

排序 計數排序

計數排序假設n個輸入元素中的每乙個都是在0到k區間內的乙個整數,其中k為某個整數。當k o n 時,排序的執行時間為 n 計數排序的基本思想是 對每乙個輸入元素x,確定小於x的元素個數。利用這一資訊,就可以直接把x放到它在輸出陣列中的位置上了。例如,如果有17個元素小於x,則x就應該在第18個輸出位...

python計數排序 Python 計數排序

1.python coding utf 8 def counting sort a,b,k 計數排序,偽碼如下 counting sort a,b,k 1 for i 0 to k 初始化儲存區的值 2 do c i 0 3 for j 1 to length a 為各值計數 4 do c a j ...