在线观看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)

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

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

    評論

    相關推薦
    熱點推薦

    基數字鑰匙平臺正式上線

    領先的汽車智能化解決方案供應商上海銀基科技股份有限公司正式宣布,旗下支持Apple錢包中的數字車鑰匙接入的銀基數字鑰匙平臺正式上線,該平臺全面適配CCC國際標準,標志著數字鑰匙全球化部署進程取得重要進展。
    的頭像 發表于 02-28 13:47 ?377次閱讀

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

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

    Phase Lab鎳基數據庫,輔助開發Ni-AI-Cr-X系高溫合金

    Phase Lab? 鎳基數據庫 輔助開發Ni-AI-Cr-X系高溫合金 Ni-Al-Cr-X四元系(X=Mo、Ti和W),基于γ基體相(FCC_A1結構)與γ'有序相(FCC_L12結構
    的頭像 發表于 01-08 11:29 ?491次閱讀
    Phase Lab鎳<b class='flag-5'>基數</b>據庫,輔助開發Ni-AI-Cr-X系高溫合金

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

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

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

    Phase Lab? 鎳基數據庫 驅動高性能Ni-AI-Co-Cr系合金設計 鎳基合金以優異的高溫強度、耐蝕和耐磨等性能,廣泛應用于航空發動機、燃氣輪機等高溫工作部件以及化工、醫療和海洋工程等腐蝕性
    的頭像 發表于 12-31 10:12 ?457次閱讀
    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 ?1552次閱讀
    時間復雜度為 O(n^2) 的<b class='flag-5'>排序</b>算法

    TPS54120排序和跟蹤

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

    CyU3PDmaMultiChannelCommitBuffer失敗后,如何重置?

    進行緩沖)。 定制 描述符區域 基數:0x40000000 大小:12 KB 代碼區基數:0x40003000 大小: 134 KB 數據區基:0x40024800 大小: 32 KB 驅動程序堆基
    發表于 09-27 08:37

    安達發|APS高級程高級物料需求計劃

    APS高級程高級物料需求計劃是在制造業中非常重要的概念。它們分別涉及到生產計劃和物料管理,對于提高生產效率、降低成本和滿足客戶需求具有重要意義。下面我將詳細介紹這兩個概念及其在實際生產
    的頭像 發表于 09-25 17:49 ?518次閱讀
    安達發|APS高級<b class='flag-5'>排</b>程高級物料需求計劃

    端子的布置原則介紹

    端子作為電氣控制系統中不可或缺的組成部分,其設計要求精確嚴謹,以確保系統的安全穩定運行。從材料選擇到結構布局,再到編號規則,每一個細節都關系到電氣控制系統的整體性能。下面詳細探討端子的設計要求
    的頭像 發表于 08-28 10:33 ?1979次閱讀

    CyU3PDmaMultiChannelCommitBuffer失敗后,如何使重置速度更快?

    區域進行緩沖)。 定制 描述符區域 基數:0x40000000 大小:12 KB 代碼區基數:0x40003000 大小: 134 KB 數據區基:0x40024800 大小: 32 KB
    發表于 07-23 08:29

    OPSL 優勢4:良好的可靠性 - 龐大的安裝基數

    光泵半導體激光器 (OPSL) 是一項獨有的技術,與其他連續 (CW) 固態激光器相比,它具有良好的可靠性和使用壽命。 加上 OPSL 的其他優勢,這種激光器的安裝量接近 100,000 萬臺,應用于從生命科學到燈光表演等各種要求嚴格的領域,這證明了其可靠性。 出色的可見光和紫外光可靠性 在過去的 50 年中,出現了幾種不同的技術,為連續 (CW) 可見光和紫外光激光器的應用提供了支持。 首先是離子激光器,然后是燈泵浦固態、半導體泵浦固態 (DPSS)、激光半導體
    的頭像 發表于 07-11 06:37 ?563次閱讀
    OPSL 優勢4:良好的可靠性 - 龐大的安裝<b class='flag-5'>基數</b>

    數控機床中常見的屑裝置有哪些

    數控機床是現代制造業中不可或缺的設備,其高效、精密、自動化的特點為生產帶來了極大的便利。然而,在加工過程中,金屬屑的產生不僅會影響加工質量,還可能對機床和操作人員造成安全隱患。因此,屑裝置在數
    的頭像 發表于 07-01 14:13 ?2200次閱讀

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

    今天以直接插入排序算法,給大家分享一下排序算法的實現思路,主要包含以下部分內容:插入排序介紹插入排序算法實現手把手教你排序算法怎么寫在添加新
    的頭像 發表于 06-04 08:03 ?975次閱讀
    手把手教你<b class='flag-5'>排序</b>算法怎么寫
    主站蜘蛛池模板: 三级理论手机在线观看视频 | 国产三级在线免费观看 | 爱爱网站免费 | 亚洲综合色就色手机在线观看 | 亚洲人成综合网站在线 | 99久久99这里只有免费费精品 | 日本午夜视频 | 午夜网站在线观看 | 色播在线视频 | 国产成人免费无庶挡视频 | 四虎国产精品视频免费看 | 爱爱动态视频免费视频 | 久久免费看视频 | 亚洲啪啪 | 四虎sihu新版影院亚洲精品 | 一区二区美女视频 | 亚洲一区免费 | 亚洲第一成年网 | 亚洲嫩草影院在线观看 | 天天操天天射天天操 | 国产精品午夜在线观看 | 国产精品毛片在线大全 | 轻点太大了好深好爽h文 | 亚洲骚片 | 美女免费视频黄 | 一区二区三区四区国产精品 | 草草影院ccyy国产日本欧美 | 亚洲精品456人成在线 | 国产叼嘿视频网站在线观看 | 激情婷婷六月天 | 一级毛片ab片高清毛片 | 欧美色欧美亚洲高清在线视频 | 夜夜爽影院 | 欧美ggg| 婷婷久久久五月综合色 | 免费在线视频你懂的 | 日本高清免费aaaaa大片视频 | 婷婷春色 | 色综合网天天综合色中文男男 | 久久香蕉精品视频 | bt种子在线搜索 |