在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基數排序是怎么排的_基數排序詳細過程

lhl545545 ? 來源:電子發燒友網 ? 2018-02-05 14:11 ? 次閱讀

計數排序

學習基數排序之前首先學習計數排序。

計數排序假設每個元素都是在0到k之間的一個整數。

基數排序的基本思想,對于每個元素x,如果我們知道了小于x的元素的個數,就可以確定輸出數組中元素x的位置,那么直接將元素x放到輸出數組中。比如有3小于x的元素,那在輸出數組中,x肯定位于第4個位置。

計數排序的算法用偽代碼描述為:

COUNTING-SORT(A,k)

// 初始化數組C

for i=0 to k

C[i]=0

// 統計A[j]元素出現的次數,保存到C數組中

for j=0 to A.length

C[A[j]]=C[A[j]]+1

// 統計小于等于A[j]元素的個數

for k=0 to k

C[K]=C[K-1]+C[K]

// 將A中的元素放在B中正確的位置

for i=A.length to 0

B[C[A[i]]-1]=A[i]

C[A[i]]=C[A[i]]-1

注:由于有可能有相同元素存在,所以,每次將A[i]元素放入B數組中,都要將C[A[j]]的值減一,這樣當遇到下一個值等于A[j]的元素時,該元素就能放在輸出數組中A[j]的前面。

計數排序的詳細過程如下

基數排序是怎么排的_基數排序詳細過程

計數排序的關鍵代碼如下

public int[] countSort(int a[], int k) {

int[] b = new int[a.length];

int[] c = new int[k];

for (int i = 0; i

c[i] = 0;

}

for (int i = 0; i

c[a[i]] += 1;

}

for (int i = 0; i

if (i != 0) {

c[i] += c[i - 1];

}

}

for (int i = a.length - 1; i >= 0; i--) {

b[c[a[i]] - 1] = a[i];

c[a[i]] = c[a[i]] - 1;

}

return b;

}

計數排序的性能

很容易得到計數排序的時間復雜度為:T(n)=O(k+n),因此當k小于等于n,也就是當k=O(n),k和n同階時,采用計數排序的時間復雜度為T(n)=O(n)

同時,計數排序也是一種穩定的排序算法。

基數排序

基數排序最初是用在打孔卡片制表機上的一種排序算法,由Herman Hollerith發明,也就是IBM的創始人。

基數排序從最低為開始來排序的,從低位到高位,按位排序,按位排序必須是穩定的。

基數排序的詳細過程

基數排序是怎么排的_基數排序詳細過程

基數排序算法描述

RADIX-SORT(A,d)

for i=1 to d

use a stable sort to sort arrat A on digit i

在這里我們選擇計數排序。考慮常規情況,對[0.。.9]之間的數排序,k=10,且一般有k<

基數排序的關鍵代碼,這里以數組排序時按照十進制每位進行比較。

/**

* 基數排序

* @param result 最終已排序的數組,共用一個節省空間

* @param maxLen 待排序的數組中最大的位數

*/

public static void radixSort(int[] a,int[] result, int maxLen) {

int flag = 1;

// 保存每輪要排序的位對應數組a的值

int [] digitArr = new int[a.length];

for(int i=0; i

// 共比較的輪數

flag *= 10;

// b數組中對應的裝著a數組中每位的數,第一輪裝著各位,第二輪裝著十位數。。.

for (int j = 0; j < digitArr.length; j++) {

digitArr[j]=a[j]%flag;

digitArr[j]=digitArr[j]/(flag/10);

}

countSort(a, digitArr,result,10);

// 每一輪計數排序完后刷新下一輪要排序的數組

System.arraycopy(result, 0, a, 0,result.length);

}

}

調用計數排序的函數

/**

* 計數排序 :對數組a中的元素按某些位排序

* @param tmp 要參與排序的當前位的值保存在tmp中

* @param result 每次計數排序后的新的數組順序

*/

public static void countSort(int a[], int tmp[], int result[], int k) {

int[] c = new int[k];

for (int i = 0; i < c.length; i++) {

c[i] = 0;

}

for (int i = 0; i

c[tmp[i]] += 1;

}

for (int i = 0; i < c.length; i++) {

if (i != 0) {

c[i] += c[i - 1];

}

}

for (int i = tmp.length - 1; i >= 0; i--) {

// 和計數排序唯一的差別在于賦值的時候用真實的數據

result[c[tmp[i]] - 1] = a[i];

c[tmp[i]] = c[tmp[i]] - 1;

}

}

基數排序的性能

如果基數排序使用的穩定排序算法的時間復雜度為O(n+k),那么基數排序的時間復雜度為T(n)=O(d(n+k))

很容易理解要循環d輪,每輪耗時為O(n+k),于是總的耗時為O(d(n+k))

在此基礎上,從2^r進制來看,此時k為2^r,并且一個b位數要比較b/r輪。于是我們得到T(n)=O((b/r)(n+2^r))

對上式求導可得其最小值。此時r=lgn,此時T(n)=O((b/lgn)n),如果再取b=lgn,這時就能達到最少的運行時間,時間復雜度為T(n)=O(n)

基數排序也是穩定的排序算法

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
收藏 人收藏

    評論

    相關推薦

    詳解Linux sort命令之掌握排序技巧與實用案例

    在linux系統使用過程中,提供了sort排序命令,支持常用的排序功能。 常用參數 sort命令支持很多參數,常用參數如下: ? 短參數 長參數 說明 -n – number-sort 按字符串數值
    的頭像 發表于 01-09 10:10 ?146次閱讀

    TimSort:一個在標準函數庫中廣泛使用的排序算法

    在計算機科學的領域,排序算法是每位學生必學的基礎,而排序的需求是每位程序員在編程過程中都會遇到的。 在你輕松調用 .sort() 方法對數據進行排序時,是否曾好奇過,這個簡單的方法背后
    的頭像 發表于 01-03 11:42 ?96次閱讀

    Phase Lab鎳基數據庫,驅動高性能Ni-AI-Co-Cr系合金設計

    Phase Lab? 鎳基數據庫 驅動高性能Ni-AI-Co-Cr系合金設計 鎳基合金以優異的高溫強度、耐蝕和耐磨等性能,廣泛應用于航空發動機、燃氣輪機等高溫工作部件以及化工、醫療和海洋工程等腐蝕性
    的頭像 發表于 12-31 10:12 ?151次閱讀
    Phase Lab鎳<b class='flag-5'>基數</b>據庫,驅動高性能Ni-AI-Co-Cr系合金設計

    在TMS320C62x上實現的擴展精度基數-4快速傅里葉變換

    電子發燒友網站提供《在TMS320C62x上實現的擴展精度基數-4快速傅里葉變換.pdf》資料免費下載
    發表于 10-28 10:03 ?0次下載
    在TMS320C62x上實現的擴展精度<b class='flag-5'>基數</b>-4快速傅里葉變換

    時間復雜度為 O(n^2) 的排序算法

    作者:京東保險 王奕龍 對于小規模數據,我們可以選用時間復雜度為 O(n2) 的排序算法。因為時間復雜度并不代表實際代碼的執行時間,它省去了低階、系數和常數,僅代表的增長趨勢,所以在小規模數據情況下
    的頭像 發表于 10-19 16:31 ?1203次閱讀
    時間復雜度為 O(n^2) 的<b class='flag-5'>排序</b>算法

    TPS54120排序和跟蹤

    電子發燒友網站提供《TPS54120排序和跟蹤.pdf》資料免費下載
    發表于 10-10 10:54 ?0次下載
    TPS54120<b class='flag-5'>排序</b>和跟蹤

    手把手教你排序算法怎么寫

    今天以直接插入排序算法,給大家分享一下排序算法的實現思路,主要包含以下部分內容:插入排序介紹插入排序算法實現手把手教你排序算法怎么寫在添加新
    的頭像 發表于 06-04 08:03 ?735次閱讀
    手把手教你<b class='flag-5'>排序</b>算法怎么寫

    具有先進排序和輸出裕度的中輸入同步降壓控制器TPS40101數據表

    電子發燒友網站提供《具有先進排序和輸出裕度的中輸入同步降壓控制器TPS40101數據表.pdf》資料免費下載
    發表于 04-22 10:26 ?0次下載
    具有先進<b class='flag-5'>排序</b>和輸出裕度的中輸入同步降壓控制器TPS40101數據表

    具有先進排序和輸出裕度的中輸入同步降壓控制器TPS40100數據表

    電子發燒友網站提供《具有先進排序和輸出裕度的中輸入同步降壓控制器TPS40100數據表.pdf》資料免費下載
    發表于 04-17 10:59 ?0次下載
    具有先進<b class='flag-5'>排序</b>和輸出裕度的中輸入同步降壓控制器TPS40100數據表

    3-A、3.3/5V輸入、可調開關穩壓器,具有自動跟蹤TM排序功能PTH04000W數據表

    電子發燒友網站提供《3-A、3.3/5V輸入、可調開關穩壓器,具有自動跟蹤TM排序功能PTH04000W數據表.pdf》資料免費下載
    發表于 04-17 09:32 ?0次下載
    3-A、3.3/5V輸入、可調開關穩壓器,具有自動跟蹤TM<b class='flag-5'>排序</b>功能PTH04000W數據表

    支持 ACPI 的 10 軌電源排序器和監視器UCD9090A數據表

    電子發燒友網站提供《支持 ACPI 的 10 軌電源排序器和監視器UCD9090A數據表.pdf》資料免費下載
    發表于 03-29 09:12 ?0次下載
    支持 ACPI 的 10 軌電源<b class='flag-5'>排序</b>器和監視器UCD9090A數據表

    用FPGA實現雙調排序的方法(2)

    典型的排序算法包括冒泡排序、選擇排序、插入排序、歸并排序、快速排序、希爾
    的頭像 發表于 03-21 10:28 ?658次閱讀
    用FPGA實現雙調<b class='flag-5'>排序</b>的方法(2)

    FPGA實現雙調排序算法的探索與實踐

    雙調排序(BitonicSort)是數據獨立(Data-independent)的排序算法,即比較順序與數據無關,特別適合并行執行。在了解雙調排序算法之前,我們先來看看什么是雙調序列。
    發表于 03-14 09:50 ?683次閱讀
    FPGA實現雙調<b class='flag-5'>排序</b>算法的探索與實踐

    想聽聽48和大對數光纜的排序

    48芯光纜和大對數光纜都是光纜中的一種,它們的區別在于芯數不同。48芯光纜指的是光纜中包含48根光纖,而大對數光纜則是指光纜中芯數超過了48芯。 在實際的光纜應用中,不同芯數的光纜需要進行不同的排序
    的頭像 發表于 03-12 10:44 ?661次閱讀

    C語言實現經典排序算法概覽

    冒泡排序(英語:Bubble Sort)是一種簡單的排序算法。它重復地走訪過要排序的數列,一次比較兩個元素,如果他們的順序(如從大到小、首字母從A到Z)錯誤就把他們交換過來。
    的頭像 發表于 02-25 12:27 ?467次閱讀
    C語言實現經典<b class='flag-5'>排序</b>算法概覽
    主站蜘蛛池模板: 国产成人精品曰本亚洲| 欧美成人午夜视频| 操白虎美女| 免费看的黄网站| 国产性大片黄在线观看在线放| 国产一区二区三区夜色| 伊人久久大香线蕉综合bd高清| 伊人久久大杳蕉综合大象| 性在线视频| 色成人亚洲| 久久精品国产夜色| 丁香婷婷久久大综合| 夜夜爽免费视频| 美妇乱人伦性| 操女人免费视频| 国产一区二区三区夜色| 特级做a爰片毛片免费看一区| 日韩有码电影| 花怜write. as| 天天做天天爱夜夜爽女人爽宅| 精品国产理论在线观看不卡| 欧美激情伊人| 国产精品久久久久久一级毛片| 亚1州区2区三区4区产品| 人人入人人爱| 国产精品一级毛片不收费| 午夜视频福利在线观看| 5555kkkk香蕉在线观看| 看全色黄大色大片免费| 特级淫片aaaaa片毛片| 久久黄色视屏| 午夜免费啪视频观看网站 | 色丁香婷婷| 精品美女在线观看| 182tv免费视视频线路一二三| 国产视频黄色| 制服丝袜中文字幕第一页| 色狠狠网| www我要色综合com| 免费观看片| 日本一卡二卡3卡四卡网站精品|