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

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

視頻號(hào)
視頻號(hào)

抖音
抖音

快手
快手

微博
微博

如何按照計(jì)數(shù)進(jìn)行排序

文檔

如何按照計(jì)數(shù)進(jìn)行排序

計(jì)數(shù)排序的核心在于將輸入的數(shù)據(jù)值轉(zhuǎn)化為鍵存儲(chǔ)在額外開辟的數(shù)組空間中。作為一種線性時(shí)間復(fù)雜度的排序,計(jì)數(shù)排序要求輸入的數(shù)據(jù)必須是有確定范圍的整數(shù)。
推薦度:
導(dǎo)讀計(jì)數(shù)排序的核心在于將輸入的數(shù)據(jù)值轉(zhuǎn)化為鍵存儲(chǔ)在額外開辟的數(shù)組空間中。作為一種線性時(shí)間復(fù)雜度的排序,計(jì)數(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ù)排序等。以下是計(jì)數(shù)排序算法:

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

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

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

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

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

?算法的步驟如下:

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

代碼實(shí)現(xiàn)JavaScript 實(shí)例 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實(shí)例 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實(shí)例 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實(shí)例 public class CountingSort implements IArraySort {? ? @Override? ? public int[] sort(int[] sourceArray) throws Exception {? ? ? ? // 對(duì) 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實(shí)例 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實(shí)例 #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

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

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

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

線性對(duì)數(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:"桶"的個(gè)數(shù)

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

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

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

文檔

如何按照計(jì)數(shù)進(jìn)行排序

計(jì)數(shù)排序的核心在于將輸入的數(shù)據(jù)值轉(zhuǎn)化為鍵存儲(chǔ)在額外開辟的數(shù)組空間中。作為一種線性時(shí)間復(fù)雜度的排序,計(jì)數(shù)排序要求輸入的數(shù)據(jù)必須是有確定范圍的整數(shù)。
推薦度:
為你推薦
資訊專欄
熱門視頻
相關(guān)推薦
描寫元宵節(jié)的唯美詩(shī)詞 堆排序怎么排 關(guān)于蘭花的詩(shī)句兩句 java快速排序 關(guān)于寫小動(dòng)物的詩(shī) 描寫夏天的詩(shī)句簡(jiǎn)單 踏青詩(shī)句最出名詩(shī)句 描寫燕子的古詩(shī)絕句 歸并排序python 希爾排序 選擇排序法 基數(shù)排序怎么排 冒泡排序python 關(guān)于放風(fēng)箏的古詩(shī) 桶式排序 計(jì)數(shù)排序算法c++實(shí)現(xiàn) 堆排序法排序怎么排 關(guān)于蘭花的詩(shī)句古詩(shī) 快速排序c語(yǔ)言 兩句關(guān)于動(dòng)物的詩(shī)句 桶排序 寫與風(fēng)箏有關(guān)的詩(shī) 冒泡排序python代碼 基數(shù)排序 選擇排序 插入排序 java希爾排序算法 歸并排序c語(yǔ)言 積累描寫燕子的詩(shī)句 出門踏青的詩(shī)句 5首夏天的古詩(shī)簡(jiǎn)單 描寫小動(dòng)物的古詩(shī) 快速排序java 蘭花的詩(shī)詞佳句 元宵節(jié)代表詩(shī)詞 托爾斯泰的名言 列寧的名言 關(guān)于樂觀的名言 有關(guān)友誼的名言 關(guān)于交友的名言警句
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>
  • 亚洲性夜色噜噜噜7777| 久久亚洲欧美| 欧美福利视频| 黄色一区二区在线| 亚洲免费在线观看| 欧美日韩一区综合| 日韩视频在线你懂得| 免费成人你懂的| 在线日韩欧美视频| 久久综合狠狠综合久久综合88| 国产亚洲日本欧美韩国| 亚洲在线第一页| 国产精品系列在线播放| 午夜精品福利一区二区三区av| 国产精品视频一区二区三区| 亚洲欧美韩国| 国产日韩精品久久久| 久久国产日韩欧美| 伊人激情综合| 欧美风情在线观看| 这里只有精品视频| 国产精品久久久久久超碰| 一本大道久久a久久精二百| 欧美天堂亚洲电影院在线播放| 制服丝袜亚洲播放| 国产欧美精品久久| 久久久久亚洲综合| 亚洲精品国产精品国自产在线| 欧美激情1区| 亚洲一区区二区| 国产香蕉久久精品综合网| 久久久久女教师免费一区| 一区在线电影| 欧美精品成人| 亚洲免费视频观看| 国产亚洲欧美激情| 欧美成人tv| 亚洲自拍偷拍一区| 伊人久久亚洲热| 欧美女同在线视频| 欧美在线短视频| 亚洲精品日韩精品| 国产日产欧产精品推荐色| 久久久无码精品亚洲日韩按摩| 亚洲国产精品专区久久| 国产精品二区三区四区| 久久一综合视频| 亚洲小视频在线观看| 黄色资源网久久资源365| 欧美日韩精品一区二区天天拍小说| 亚洲欧美卡通另类91av| 亚洲第一在线综合在线| 国产精品久久久久久久久久久久久久| 久久久久久久一区二区三区| 日韩一级成人av| 国产欧美日韩一区| 欧美日本一道本| 久久久久久久网站| 亚洲天堂网在线观看| 伊人激情综合| 国产欧美日韩免费| 欧美日韩在线免费视频| 噜噜噜91成人网| 亚洲欧美日韩精品综合在线观看| 亚洲激情成人网| 好看不卡的中文字幕| 欧美日韩中文另类| 老牛嫩草一区二区三区日本| 午夜精品www| 日韩视频在线观看| 亚洲国产精品123| 国产伊人精品| 国产农村妇女精品| 欧美性久久久| 欧美日韩免费高清| 欧美另类高清视频在线| 另类综合日韩欧美亚洲| 久久狠狠亚洲综合| 亚洲欧美自拍偷拍| 亚洲一二三区精品| 在线综合亚洲| 日韩亚洲欧美一区二区三区| 在线观看成人网| 国产一区视频观看| 国产在线一区二区三区四区 | 亚洲无亚洲人成网站77777| 黄色精品一二区| 国产自产v一区二区三区c| 国产精品婷婷| 国产精品社区| 国产精品日韩欧美一区二区| 国产精品久久久久久久久久妞妞| 女仆av观看一区| 另类av一区二区| 欧美不卡视频| 欧美激情片在线观看| 欧美激情一二区| 欧美人与禽猛交乱配视频| 欧美精品videossex性护士| 欧美黄免费看| 欧美日韩蜜桃| 国产精品久久久久国产a级| 欧美性色综合| 国产日本欧美一区二区| 国产日韩综合| 欲色影视综合吧| 亚洲第一精品福利| 亚洲精品乱码久久久久久蜜桃麻豆| 亚洲三级色网| 亚洲一区综合| 欧美一区二区视频网站| 久久综合色天天久久综合图片| 久久综合中文色婷婷| 久久夜色精品一区| 美女脱光内衣内裤视频久久网站| 嫩草国产精品入口| 欧美日韩a区| 国产女人aaa级久久久级| 一区在线观看| 一区二区高清视频在线观看| 性高湖久久久久久久久| 欧美亚洲视频一区二区| 久久在线免费观看视频| 欧美日韩精品免费观看视一区二区| 国产精品国产一区二区 | 亚洲免费观看高清完整版在线观看熊 | 国产精品高潮呻吟久久| 国产精品毛片a∨一区二区三区|国 | 欧美一区国产二区| 蜜臀久久久99精品久久久久久| 欧美日韩成人综合| 国产日韩免费| 亚洲精选成人| 久久精品视频一| 欧美视频福利| 永久免费精品影视网站| 一本色道久久88综合亚洲精品ⅰ | 亚洲午夜小视频| 欧美一区二区三区男人的天堂| 牛牛影视久久网| 国产精品亚洲综合一区在线观看| 在线精品视频一区二区三四| 亚洲午夜高清视频| 欧美电影打屁股sp| 国外成人免费视频| 亚洲在线网站| 欧美日韩日本视频| 亚洲第一福利视频| 欧美中文在线观看| 国产精品h在线观看| 91久久精品国产91性色| 亚洲天堂网在线观看| 欧美国产三区| 国产一区二区三区四区五区美女| 在线亚洲欧美视频| 欧美高清在线| 在线观看视频亚洲| 久久久97精品| 国产无遮挡一区二区三区毛片日本| 一本久道综合久久精品| 欧美黑人一区二区三区| 影音先锋久久| 久久久久国产精品一区二区| 国产精品一区二区在线观看| 国产精品99久久久久久宅男| 美日韩精品视频| 一区二区三区在线视频免费观看 | 欧美在线观看你懂的| 国产精品久久久一区二区| 一本久久青青| 欧美日韩播放| aⅴ色国产欧美| 欧美三级免费| 亚洲天堂成人| 国产精品嫩草久久久久| 亚洲综合视频在线| 国产美女在线精品免费观看| 亚洲永久免费观看| 国产精品夜夜嗨| 性欧美精品高清| 国产精品扒开腿做爽爽爽视频| 亚洲另类自拍| 欧美日韩国内| 亚洲一级片在线看| 国产欧美日韩在线视频| 久久国产欧美| 一区二区三区在线视频观看| 久久先锋影音| 亚洲人屁股眼子交8| 欧美日韩国产一区二区| 亚洲视频精品| 国产视频在线观看一区二区| 欧美一区二区在线免费观看| 国产主播一区二区三区| 久久久综合免费视频| 在线免费不卡视频| 欧美日韩精品一区| 性久久久久久久久久久久| 黄色一区二区三区| 欧美国产日本在线|