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

更多精彩內容,歡迎關注:

視頻號
視頻號

抖音
抖音

快手
快手

微博
微博

計數(shù)排序算法c++實現(xiàn)

文檔

計數(shù)排序算法c++實現(xiàn)

計數(shù)排序的核心在于將輸入的數(shù)據(jù)值轉化為鍵存儲在額外開辟的數(shù)組空間中。作為一種線性時間復雜度的排序,計數(shù)排序要求輸入的數(shù)據(jù)必須是有確定范圍的整數(shù)。
推薦度:
導讀計數(shù)排序的核心在于將輸入的數(shù)據(jù)值轉化為鍵存儲在額外開辟的數(shù)組空間中。作為一種線性時間復雜度的排序,計數(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ù)結構與算法》中最基本的算法之一。排序算法可以分為內部排序和外部排序,內部排序是數(shù)據(jù)記錄在內存中進行排序,而外部排序是因排序的數(shù)據(jù)很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。常見的內部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數(shù)排序等。以下是計數(shù)排序算法:

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

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

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

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

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

?算法的步驟如下:

(1)找出待排序的數(shù)組中最大和最小的元素(2)統(tǒng)計數(shù)組中每個值為i的元素出現(xiàn)的次數(shù),存入數(shù)組C的第i項(3)對所有的計數(shù)累加(從C中的第一個元素開始,每一項和前一項相加)(4)反向填充目標數(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 進行拷貝,不改變參數(shù)內容? ? ? ? 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ù)排序算法詳細介紹,插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數(shù)排序等排序算法各有優(yōu)缺點,用一張圖概括:

關于時間復雜度

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

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

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

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

關于穩(wěn)定性

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

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

名詞解釋:

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

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

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

Out-place:占用額外內存

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

文檔

計數(shù)排序算法c++實現(xiàn)

計數(shù)排序的核心在于將輸入的數(shù)據(jù)值轉化為鍵存儲在額外開辟的數(shù)組空間中。作為一種線性時間復雜度的排序,計數(shù)排序要求輸入的數(shù)據(jù)必須是有確定范圍的整數(shù)。
推薦度:
為你推薦
資訊專欄
熱門視頻
相關推薦
堆排序法排序怎么排 關于蘭花的詩句古詩 快速排序c語言 兩句關于動物的詩句 踏青的詩詞名句 含有燕子的詩句 簡述歸并排序算法的基本思路 希爾排序怎么排 直接選擇排序 基數(shù)排序流程圖 python冒泡排序算法 桶排序c語言 計數(shù)排序菜鳥教程 堆排序算法規(guī)則 描寫蘭花的詩句古詩 快速排序算法java 帶有動物的古詩 關于踏青的唯美詩句 關于描寫燕子的詩句 歸并排序算法python思想 桶式排序 關于放風箏的古詩 冒泡排序python 基數(shù)排序怎么排 選擇排序法 希爾排序 歸并排序python 描寫燕子的古詩絕句 踏青詩句最出名詩句 描寫夏天的詩句簡單 關于寫小動物的詩 java快速排序 關于蘭花的詩句兩句 堆排序怎么排 描寫元宵節(jié)的唯美詩詞 如何按照計數(shù)進行排序 桶排序 寫與風箏有關的詩 冒泡排序python代碼 基數(shù)排序
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>
  • 老鸭窝毛片一区二区三区| 国产精品超碰97尤物18| 久久久久久久久岛国免费| 亚洲欧美一区二区在线观看| 欧美一区二区三区四区夜夜大片| 久久久久**毛片大全| 欧美激情一区二区三区在线 | 欧美电影在线观看完整版| 欧美日韩精品免费观看视频| 国产精品一卡| 亚洲精品免费在线| 欧美一区二区视频在线观看2020| 麻豆久久精品| 国产精品亚洲视频| 999在线观看精品免费不卡网站| 亚洲在线中文字幕| 欧美电影免费观看大全| 国产精品稀缺呦系列在线| 亚洲国产精品一区二区久 | 毛片一区二区三区| 亚洲精选成人| 欧美在线免费看| 欧美日韩国产精品一区| 国产欧美日韩亚州综合| 亚洲精品护士| 老鸭窝亚洲一区二区三区| 国产精品午夜在线观看| 亚洲精品久久嫩草网站秘色| 欧美一级夜夜爽| 欧美精品色综合| 1769国产精品| 久久婷婷国产麻豆91天堂| 欧美视频在线观看视频极品 | 欧美日韩爆操| 亚洲第一精品夜夜躁人人躁| 欧美在线电影| 国产精品一二三四区| 一区二区三区日韩欧美| 欧美大胆成人| 在线观看av不卡| 午夜精品久久久| 国产精品嫩草久久久久| 亚洲一区3d动漫同人无遮挡| 欧美日韩免费在线观看| 亚洲欧洲精品天堂一级| 美乳少妇欧美精品| 亚洲风情在线资源站| 久久人人精品| 伊人久久成人| 老巨人导航500精品| 韩日精品在线| 久久人人爽爽爽人久久久| 狠狠入ady亚洲精品经典电影| 欧美在线1区| 午夜精品久久久久久久久久久久久 | 一本色道久久88综合日韩精品| 久久久久久9| 精品成人国产| 久久性天堂网| 亚洲国产综合在线看不卡| 欧美成人情趣视频| 亚洲国产精品99久久久久久久久| 久久亚洲精品一区二区| 国产精品视频午夜| 午夜影视日本亚洲欧洲精品| 欧美日韩亚洲国产精品| 永久91嫩草亚洲精品人人| 欧美中文在线观看国产| 欧美激情小视频| 国产精品99久久99久久久二8 | 国产乱人伦精品一区二区| 亚洲一区二区在线看| 国产亚洲精品久久久久动| 久久久亚洲一区| 日韩一级精品| 国产日本欧美一区二区| 免费毛片一区二区三区久久久| 影音先锋一区| 午夜在线不卡| 国产乱子伦一区二区三区国色天香 | 欧美好吊妞视频| 久久成人18免费网站| 亚洲欧美精品在线观看| 国内一区二区在线视频观看| 欧美成人免费一级人片100| 亚洲校园激情| 亚洲福利视频在线| 国产精品成人午夜| 久久综合精品国产一区二区三区| 91久久黄色| 国产啪精品视频| 欧美刺激性大交免费视频| 亚洲在线一区| 亚洲国产色一区| 国产美女精品在线| 欧美激情网友自拍| 久久精品免费看| 中日韩男男gay无套| 尤物99国产成人精品视频| 欧美日韩中国免费专区在线看| 亚洲性人人天天夜夜摸| 精品91视频| 国产精品久久久久永久免费观看 | 久久天天躁狠狠躁夜夜爽蜜月| 一本一本大道香蕉久在线精品| 国模私拍视频一区| 国产精品人成在线观看免费 | 久久久久高清| 中文欧美字幕免费| 伊人久久亚洲美女图片| 国产精品激情| 欧美成人精品在线| 久久人人爽人人爽爽久久| 亚洲综合大片69999| 亚洲精品一区在线| 亚洲国产91精品在线观看| 狠狠入ady亚洲精品| 国产欧美一区二区视频| 国内精品久久久| 99亚洲一区二区| 亚洲经典在线看| 在线国产亚洲欧美| 伊人精品久久久久7777| 国内精品99| 韩国福利一区| 精品999网站| 黑人一区二区| 在线电影欧美日韩一区二区私密| 国产一区视频观看| 国产嫩草影院久久久久| 国产精品色一区二区三区| 国产精品美女主播在线观看纯欲| 欧美日本一道本| 欧美日本乱大交xxxxx| 欧美精品国产精品日韩精品| 欧美人成免费网站| 欧美色网在线| 国产伦精品一区二区三区视频孕妇| 国产精品视频xxx| 国产日韩专区在线| 国产资源精品在线观看| 好吊日精品视频| 亚洲二区在线视频| 一区二区三区久久网| 在线亚洲自拍| 久久国产精品毛片| 免费观看亚洲视频大全| 欧美日韩精品二区| 国产免费成人| 在线观看精品| 一区二区三区久久网| 夜夜嗨av色综合久久久综合网| 在线中文字幕日韩| 午夜亚洲影视| 欧美va亚洲va香蕉在线| 国产精品成人一区二区| 国模私拍视频一区| 亚洲黄色小视频| 亚洲欧美日韩精品| 欧美超级免费视 在线| 欧美午夜不卡在线观看免费 | 欧美va亚洲va香蕉在线| 欧美精品一区二区三区一线天视频| 欧美日韩精品二区| 国产香蕉97碰碰久久人人| 亚洲精品综合久久中文字幕| 午夜国产一区| 欧美高清视频在线播放| 国产老女人精品毛片久久| 亚洲国产精品久久久久秋霞影院| 在线视频精品一区| 久久久久久精| 国产精品视频网站| 亚洲精品国产无天堂网2021| 亚洲欧美一区二区视频| 免费一级欧美片在线播放| 国产精品香蕉在线观看| 亚洲人成毛片在线播放女女| 亚洲综合不卡| 欧美精品系列| 亚洲国产成人av好男人在线观看| 亚洲女人天堂成人av在线| 欧美激情亚洲视频| 国产日韩一区欧美| 日韩西西人体444www| 久热精品视频在线观看一区| 国产精品久久一级| 亚洲人精品午夜在线观看| 久久久欧美一区二区| 国产精品一区二区三区免费观看| 亚洲乱码国产乱码精品精98午夜| 久久久久久久久久码影片| 国产伦理一区| 亚洲男人影院| 欧美三级乱人伦电影| 最新国产乱人伦偷精品免费网站| 久久亚洲欧美| 韩国成人福利片在线播放| 欧美在线首页| 国产一区二区三区四区在线观看|