国产精品亚洲AV三区_国产精品日本一区二区在线播放_国产成人无码久久久精品一_性感美女视频在线观看免费精品

更多精彩內(nèi)容,歡迎關(guān)注:

視頻號
視頻號

抖音
抖音

快手
快手

微博
微博

計數(shù)排序python實現(xiàn)

文檔

計數(shù)排序python實現(xiàn)

計數(shù)排序的核心在于將輸入的數(shù)據(jù)值轉(zhuǎn)化為鍵存儲在額外開辟的數(shù)組空間中。作為一種線性時間復(fù)雜度的排序,計數(shù)排序要求輸入的數(shù)據(jù)必須是有確定范圍的整數(shù)。
推薦度:
導(dǎo)讀計數(shù)排序的核心在于將輸入的數(shù)據(jù)值轉(zhuǎn)化為鍵存儲在額外開辟的數(shù)組空間中。作為一種線性時間復(fù)雜度的排序,計數(shù)排序要求輸入的數(shù)據(jù)必須是有確定范圍的整數(shù)。
.example-btn{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.example-btn:hover{color:#fff;background-color:#47a447;border-color:#398439}.example-btn:active{background-image:none}div.example{width:98%;color:#000;background-color:#f6f4f0;background-color:#d0e69c;background-color:#dcecb5;background-color:#e5eecc;margin:0 0 5px 0;padding:5px;border:1px solid #d4d4d4;background-image:-webkit-linear-gradient(#fff,#e5eecc 100px);background-image:linear-gradient(#fff,#e5eecc 100px)}div.example_code{line-height:1.4em;width:98%;background-color:#fff;padding:5px;border:1px solid #d4d4d4;font-size:110%;font-family:Menlo,Monaco,Consolas,"Andale Mono","lucida console","Courier New",monospace;word-break:break-all;word-wrap:break-word}div.example_result{background-color:#fff;padding:4px;border:1px solid #d4d4d4;width:98%}div.code{width:98%;border:1px solid #d4d4d4;background-color:#f6f4f0;color:#444;padding:5px;margin:0}div.code div{font-size:110%}div.code div,div.code p,div.example_code p{font-family:"courier new"}pre{margin:15px auto;font:12px/20px Menlo,Monaco,Consolas,"Andale Mono","lucida console","Courier New",monospace;white-space:pre-wrap;word-break:break-all;word-wrap:break-word;border:1px solid #ddd;border-left-width:4px;padding:10px 15px}

排序算法是《數(shù)據(jù)結(jié)構(gòu)與算法》中最基本的算法之一。排序算法可以分為內(nèi)部排序和外部排序,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進(jìn)行排序,而外部排序是因排序的數(shù)據(jù)很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。常見的內(nèi)部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數(shù)排序等。以下是計數(shù)排序算法:

計數(shù)排序的核心在于將輸入的數(shù)據(jù)值轉(zhuǎn)化為鍵存儲在額外開辟的數(shù)組空間中。作為一種線性時間復(fù)雜度的排序,計數(shù)排序要求輸入的數(shù)據(jù)必須是有確定范圍的整數(shù)。

1. 計數(shù)排序的特征

當(dāng)輸入的元素是 n 個 0 到 k 之間的整數(shù)時,它的運(yùn)行時間是 Θ(n + k)。計數(shù)排序不是比較排序,排序的速度快于任何比較排序算法。

由于用來計數(shù)的數(shù)組C的長度取決于待排序數(shù)組中數(shù)據(jù)的范圍(等于待排序數(shù)組的最大值與最小值的差加上1),這使得計數(shù)排序?qū)τ跀?shù)據(jù)范圍很大的數(shù)組,需要大量時間和內(nèi)存。例如:計數(shù)排序是用來排序0到100之間的數(shù)字的最好的算法,但是它不適合按字母順序排序人名。但是,計數(shù)排序可以用在基數(shù)排序中的算法來排序數(shù)據(jù)范圍很大的數(shù)組。

通俗地理解,例如有 10 個年齡不同的人,統(tǒng)計出有 8 個人的年齡比 A 小,那 A 的年齡就排在第 9 位,用這個方法可以得到其他每個人的位置,也就排好了序。當(dāng)然,年齡有重復(fù)時需要特殊處理(保證穩(wěn)定性),這就是為什么最后要反向填充目標(biāo)數(shù)組,以及將每個數(shù)字的統(tǒng)計減去 1 的原因。

?算法的步驟如下:

(1)找出待排序的數(shù)組中最大和最小的元素(2)統(tǒng)計數(shù)組中每個值為i的元素出現(xiàn)的次數(shù),存入數(shù)組C的第i項(3)對所有的計數(shù)累加(從C中的第一個元素開始,每一項和前一項相加)(4)反向填充目標(biāo)數(shù)組:將每個元素i放在新數(shù)組的第C(i)項,每放一個元素就將C(i)減去12. 動圖演示

代碼實現(xiàn)JavaScript 實例 function countingSort(arr, maxValue) {? ? var bucket = new Array(maxValue+1),? ? ? ? sortedIndex = 0;? ? ? ? arrLen = arr.length,? ? ? ? bucketLen = maxValue + 1;? ? for (var i = 0; i < arrLen; i++) {? ? ? ? if (!bucket[arr[i]]) {? ? ? ? ? ? bucket[arr[i]] = 0;? ? ? ? }? ? ? ? bucket[arr[i]]++;? ? }? ? for (var j = 0; j < bucketLen; j++) {? ? ? ? while(bucket[j] > 0) {? ? ? ? ? ? arr[sortedIndex++] = j;? ? ? ? ? ? bucket[j]--;? ? ? ? }? ? }? ? return arr;}Python實例 def countingSort(arr, maxValue):? ? bucketLen = maxValue+1? ? bucket = [0]*bucketLen? ? sortedIndex =0? ? arrLen = len(arr)? ? for i in range(arrLen):? ? ? ? if not bucket[arr[i]]:? ? ? ? ? ? bucket[arr[i]]=0? ? ? ? bucket[arr[i]]+=1? ? for j in range(bucketLen):? ? ? ? while bucket[j]>0:? ? ? ? ? ? arr[sortedIndex] = j? ? ? ? ? ? sortedIndex+=1? ? ? ? ? ? bucket[j]-=1? ? return arrGo實例 func countingSort(arr []int, maxValue int) []int {? ? ? ? bucketLen := maxValue + 1? ? ? ? bucket := make([]int, bucketLen) // 初始為0的數(shù)組? ? ? ? sortedIndex := 0? ? ? ? length := len(arr)? ? ? ? for i := 0; i < length; i++ {? ? ? ? ? ? ? ? bucket[arr[i]] += 1? ? ? ? }? ? ? ? for j := 0; j < bucketLen; j++ {? ? ? ? ? ? ? ? for bucket[j] > 0 {? ? ? ? ? ? ? ? ? ? ? ? arr[sortedIndex] = j? ? ? ? ? ? ? ? ? ? ? ? sortedIndex += 1? ? ? ? ? ? ? ? ? ? ? ? bucket[j] -= 1? ? ? ? ? ? ? ? }? ? ? ? }? ? ? ? return arr}Java實例 public class CountingSort implements IArraySort {? ? @Override? ? public int[] sort(int[] sourceArray) throws Exception {? ? ? ? // 對 arr 進(jìn)行拷貝,不改變參數(shù)內(nèi)容? ? ? ? int[] arr = Arrays.copyOf(sourceArray, sourceArray.length);? ? ? ? int maxValue = getMaxValue(arr);? ? ? ? return countingSort(arr, maxValue);? ? }? ? private int[] countingSort(int[] arr, int maxValue) {? ? ? ? int bucketLen = maxValue + 1;? ? ? ? int[] bucket = new int[bucketLen];? ? ? ? for (int value : arr) {? ? ? ? ? ? bucket[value]++;? ? ? ? }? ? ? ? int sortedIndex = 0;? ? ? ? for (int j = 0; j < bucketLen; j++) {? ? ? ? ? ? while (bucket[j] > 0) {? ? ? ? ? ? ? ? arr[sortedIndex++] = j;? ? ? ? ? ? ? ? bucket[j]--;? ? ? ? ? ? }? ? ? ? }? ? ? ? return arr;? ? }? ? private int getMaxValue(int[] arr) {? ? ? ? int maxValue = arr[0];? ? ? ? for (int value : arr) {? ? ? ? ? ? if (maxValue < value) {? ? ? ? ? ? ? ? maxValue = value;? ? ? ? ? ? }? ? ? ? }? ? ? ? return maxValue;? ? }}PHP實例 function countingSort($arr, $maxValue = null){? ? if ($maxValue === null) {? ? ? ? $maxValue = max($arr);? ? }? ? for ($m = 0; $m < $maxValue + 1; $m++) {? ? ? ? $bucket[] = null;? ? }? ? $arrLen = count($arr);? ? for ($i = 0; $i < $arrLen; $i++) {? ? ? ? if (!array_key_exists($arr[$i], $bucket)) {? ? ? ? ? ? $bucket[$arr[$i]] = 0;? ? ? ? }? ? ? ? $bucket[$arr[$i]]++;? ? }? ? $sortedIndex = 0;? ? foreach ($bucket as $key => $len) {? ? ? ? ? ? ? ? if($len !== null){? ? ? ? ? ? for($j = 0; $j < $len; $j++){? ? ? ? ? ? ? ? $arr[$sortedIndex++] = $key;? ? ? ? ? ? }? ? ? ? }? ? }? ? return $arr;}C實例 #include #include #include void print_arr(int *arr, int n) {? ? ? ? int i;? ? ? ? printf("%d", arr[0]);? ? ? ? for (i = 1; i < n; i++)? ? ? ? ? ? ? ? printf(" %d", arr[i]);? ? ? ? printf(" ");}void counting_sort(int *ini_arr, int *sorted_arr, int n) {? ? ? ? int *count_arr = (int *) malloc(sizeof(int) * 100);? ? ? ? int i, j, k;? ? ? ? for (k = 0; k < 100; k++)? ? ? ? ? ? ? ? count_arr[k] = 0;? ? ? ? for (i = 0; i < n; i++)? ? ? ? ? ? ? ? count_arr[ini_arr[i]]++;? ? ? ? for (k = 1; k < 100; k++)? ? ? ? ? ? ? ? count_arr[k] += count_arr[k - 1];? ? ? ? for (j = n; j > 0; j--)? ? ? ? ? ? ? ? sorted_arr[--count_arr[ini_arr[j - 1]]] = ini_arr[j - 1];? ? ? ? free(count_arr);}int main(int argc, char **argv) {? ? ? ? int n = 10;? ? ? ? int i;? ? ? ? int *arr = (int *) malloc(sizeof(int) * n);? ? ? ? int *sorted_arr = (int *) malloc(sizeof(int) * n);? ? ? ? srand(time(0));? ? ? ? for (i = 0; i < n; i++)? ? ? ? ? ? ? ? arr[i] = rand() % 100;? ? ? ? printf("ini_array: ");? ? ? ? print_arr(arr, n);? ? ? ? counting_sort(arr, sorted_arr, n);? ? ? ? printf("sorted_array: ");? ? ? ? print_arr(sorted_arr, n);? ? ? ? free(arr);? ? ? ? free(sorted_arr);? ? ? ? return 0;}

參考地址:

https://github.com/hustcc/JS-Sorting-Algorithm/blob/master/8.countingSort.md

https://zh.wikipedia.org/wiki/%E8%AE%A1%E6%95%B0%E6%8E%92%E5%BA%8F

以上為計數(shù)排序算法詳細(xì)介紹,插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數(shù)排序等排序算法各有優(yōu)缺點(diǎn),用一張圖概括:

關(guān)于時間復(fù)雜度

平方階 (O(n2)) 排序 各類簡單排序:直接插入、直接選擇和冒泡排序。

線性對數(shù)階 (O(nlog2n)) 排序 快速排序、堆排序和歸并排序;

O(n1+§)) 排序,§ 是介于 0 和 1 之間的常數(shù)。 希爾排序

線性階 (O(n)) 排序 基數(shù)排序,此外還有桶、箱排序。

關(guān)于穩(wěn)定性

穩(wěn)定的排序算法:冒泡排序、插入排序、歸并排序和基數(shù)排序。

不是穩(wěn)定的排序算法:選擇排序、快速排序、希爾排序、堆排序。

名詞解釋:

n:數(shù)據(jù)規(guī)模

k:"桶"的個數(shù)

In-place:占用常數(shù)內(nèi)存,不占用額外內(nèi)存

Out-place:占用額外內(nèi)存

穩(wěn)定性:排序后 2 個相等鍵值的順序和排序之前它們的順序相同

文檔

計數(shù)排序python實現(xiàn)

計數(shù)排序的核心在于將輸入的數(shù)據(jù)值轉(zhuǎn)化為鍵存儲在額外開辟的數(shù)組空間中。作為一種線性時間復(fù)雜度的排序,計數(shù)排序要求輸入的數(shù)據(jù)必須是有確定范圍的整數(shù)。
推薦度:
為你推薦
資訊專欄
熱門視頻
相關(guān)推薦
堆排序算法操作 快速排序算法例題 歸并排序的過程舉例 希爾排序的基本原理 選擇排序算法的思路 基數(shù)排序過程 冒泡排序算法流程圖 c語言桶排序 堆是什么排序 快速排序法怎么排 歸并排序算法c++實現(xiàn) 希爾排序算法代碼 選擇排序算法的時間復(fù)雜度 基數(shù)排序的兩個基本過程是 冒泡排序算法思想 c桶排序 堆排序算法例子 編寫快速排序算法 歸并排序算法時間復(fù)雜度 希爾排序圖解流程圖 桶排序原理 冒泡排序例子 基數(shù)排序的基數(shù)什么意思 選擇排序過程 希爾排序c語言實現(xiàn) 歸并排序算法的分治方法 快速排序算法c 堆排序法 計數(shù)排序基本原理 桶排序算法原理 冒泡排序怎么優(yōu)化 基數(shù)排序是什么 選擇排序算法代碼 希爾排序過程圖解 歸并排序定義 java快速排序算法代碼 堆排序的初始堆 計數(shù)排序java 排序算法桶排 冒泡排序圖解算法
Top 国产精品亚洲AV三区_国产精品日本一区二区在线播放_国产成人无码久久久精品一_性感美女视频在线观看免费精品
<strike id="cakm0"></strike>
  • <button id="cakm0"><dl id="cakm0"></dl></button>
  • <samp id="cakm0"><tbody id="cakm0"></tbody></samp>
    <samp id="cakm0"><pre id="cakm0"></pre></samp><ul id="cakm0"></ul>
    <strike id="cakm0"></strike>
    <li id="cakm0"></li>
  • <ul id="cakm0"></ul>
  • 亚洲二区在线视频| 先锋影音久久久| 国产情人综合久久777777| 欧美一区二区日韩一区二区| 91久久精品国产91久久| 国产视频一区在线| 欧美三级视频在线观看| 免费观看一区| 久久国产欧美| 亚洲影音一区| 这里是久久伊人| 一本久久综合亚洲鲁鲁五月天| 狠狠色丁香婷婷综合| 国产精品一区二区久久久久| 欧美激情一区二区三级高清视频| 久久综合久久久久88| 久久久国产91| 久久免费视频在线观看| 久久久精彩视频| 久久免费视频在线观看| 久久久久久穴| 久久视频国产精品免费视频在线| 久久精品首页| 久久国产精品亚洲77777| 欧美在线高清| 久久久精品午夜少妇| 久久久久一区二区| 蜜臀91精品一区二区三区| 久久香蕉国产线看观看av| 久久久久成人网| 老司机精品视频网站| 久热爱精品视频线路一| 久久亚洲精品伦理| 久久先锋资源| 久久精品夜色噜噜亚洲a∨| 亚洲福利国产| 亚洲二区在线| 91久久精品久久国产性色也91| 精品不卡一区| 在线看日韩欧美| 亚洲承认在线| 亚洲日本无吗高清不卡| 精品不卡在线| 亚洲激情网址| 亚洲精品中文字幕女同| 日韩亚洲在线观看| 一本一本a久久| 亚洲精品一品区二品区三品区| 日韩一级黄色av| 9人人澡人人爽人人精品| 亚洲精品日产精品乱码不卡| 亚洲精品一区在线观看香蕉| 一本大道久久a久久精二百| 一本色道久久88综合日韩精品| 一区二区免费在线观看| 亚洲视频每日更新| 亚洲免费伊人电影在线观看av| 欧美亚洲三区| 麻豆精品视频在线| 欧美日韩第一区| 国产精品私拍pans大尺度在线| 国产专区综合网| 亚洲国产合集| 日韩手机在线导航| 亚洲欧美日韩直播| 你懂的国产精品永久在线| 欧美激情精品久久久久久蜜臀 | 国产一区视频网站| 影音先锋欧美精品| 在线视频亚洲| 久久久精彩视频| 欧美人与禽猛交乱配| 国产精品户外野外| 在线观看亚洲视频啊啊啊啊| 夜夜精品视频一区二区| 欧美一区亚洲二区| 欧美精品国产| 国产原创一区二区| av成人动漫| 久久久久一区二区三区| 欧美午夜大胆人体| 在线观看亚洲精品| 欧美一区在线看| 久久综合久久综合久久| 国产精品进线69影院| 亚洲国产精品va在线看黑人| 亚洲免费小视频| 欧美人成免费网站| 狠狠色噜噜狠狠色综合久| 一区二区av| 欧美激情精品久久久六区热门 | 一区二区三区 在线观看视频| 欧美一区日本一区韩国一区| 欧美日韩国产bt| 在线观看日产精品| 久久成人精品无人区| 欧美午夜视频在线观看| 亚洲日本无吗高清不卡| 久久久人人人| 国产一区二区三区在线免费观看| 一区二区三区日韩| 欧美日韩国产999| 亚洲国产日韩一区| 麻豆av一区二区三区| 国内精品视频在线播放| 欧美一二三区在线观看| 久久久精品五月天| 好吊一区二区三区| 久久福利影视| 国产视频综合在线| 欧美一区二区三区成人| 国产乱码精品一区二区三区忘忧草| 99xxxx成人网| 欧美视频一区二区三区四区| 日韩视频一区| 欧美日精品一区视频| 一区二区三区国产| 国产精品成人一区二区三区夜夜夜 | 亚洲美女少妇无套啪啪呻吟| 久久伊伊香蕉| 在线高清一区| 牛牛国产精品| 亚洲人成免费| 欧美日韩另类丝袜其他| 亚洲私人影院| 国产欧美一区二区三区沐欲| 久久精品国产v日韩v亚洲 | 一本色道久久综合亚洲精品婷婷| 欧美久久九九| 亚洲午夜电影| 国产一区二区三区的电影| 亚洲伊人一本大道中文字幕| 欧美日韩一区二区免费在线观看| 亚洲第一狼人社区| 国产精品啊啊啊| 久久超碰97中文字幕| 在线欧美视频| 欧美性色视频在线| 久久精品国产清自在天天线| 亚洲高清视频在线| 欧美性猛交99久久久久99按摩| 欧美在线一级视频| 亚洲区在线播放| 国产精品乱码| 欧美成人69av| 亚洲一区二区在线| 在线观看一区二区精品视频| 鲁大师影院一区二区三区| 亚洲国产成人av| 国产精品成人免费| 久久综合久久综合九色| 夜夜嗨网站十八久久| 国模精品一区二区三区| 欧美日本在线观看| 久久久欧美精品| 亚洲一区在线免费| 91久久亚洲| 狠狠色丁香婷综合久久| 国产精品白丝黑袜喷水久久久 | 欧美成人免费全部| 亚洲欧美中文另类| 亚洲每日更新| 韩日精品视频| 国产区在线观看成人精品| 欧美精品乱码久久久久久按摩| 久久精品国产精品亚洲综合| 99在线精品观看| 亚洲精品之草原avav久久| 精品99一区二区三区| 国产美女精品视频免费观看| 欧美日韩一级片在线观看| 久久亚洲色图| 久久精品国产视频| 午夜国产精品影院在线观看 | 亚洲一级二级在线| 最新日韩av| 亚洲国产一成人久久精品| 国内揄拍国内精品久久| 国产精品一二一区| 国产精品免费一区二区三区在线观看| 欧美精品一区三区| 欧美极品在线观看| 欧美国产日本韩| 欧美国产日韩精品免费观看| 免费视频亚洲| 欧美高清视频一二三区| 久久性天堂网| 欧美激情一区二区三区蜜桃视频| 女人色偷偷aa久久天堂| 老鸭窝毛片一区二区三区| 美日韩在线观看| 蘑菇福利视频一区播放| 欧美韩日一区二区| 欧美日韩高清一区| 欧美系列电影免费观看| 国产精品视频一区二区三区| 国产日韩综合| 在线观看91久久久久久| 国产欧美日韩另类一区 | 日韩亚洲精品在线|