黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

面試題首頁 > 基數排序面試題

基數排序面試題

001什么是基數排序?

1)基數排序是對桶排序的一種改進,這種改進是讓“桶排序”適合于更大的元素值集合的情況,而不是提高性能。它的基本思想是:將整數按位數切割成不同的數字,然后按每個位數分別比較。

2)算法圖解

第一步,將所有待比較數值根據個位數的數值分別分配至編號0到9的桶中;

第二步,桶中數據根據先進先出的原則出來,收集完整的序列;

第三步,十位、百位....周而復始

002基數排序的代碼實現?

//digit代表最大的數有幾個十進制位
public static void radixSort(int[] arr, int L, int R, int digit) {
    //十進制數
    final int radix = 10;
    int i = 0, j = 0;
    // 有多少個數準備多少個輔助空間
    int[] bucket = new int[R - L + 1];
    for (int d = 1; d <= digit; d++) { // 有多少位就循環幾次
        //十進制的數,創建長度為10的數組
        int[] count = new int[radix]; // count[0..9]
        for (i = L; i <= R; i++) {
            j = getDigit(arr[i], d);//獲取該數的個位、十位、百位......上的數
            count[j]++;//獲取數組中每個數每位分別是1、2、3....9數分別總共有幾個
        }
        for (i = 1; i < radix; i++) {
            //獲取數組中每個數每位分別是<=1、<=2、<=3....<=9數分別總共有幾個
            count[i] = count[i] + count[i - 1];
        }
        for (i = R; i >= L; i--) {
            j = getDigit(arr[i], d);//獲取該數的個位、十位、百位......上的數
            bucket[count[j] - 1] = arr[i];//將數放回到輔助空間
            count[j]--;
        }
        for (i = L, j = 0; i <= R; i++, j++) {
            arr[i] = bucket[j];
        }
    }
}
//獲取該數的個位、十位、百位......上的數	
public static int getDigit(int x, int d) {		
    return ((x / ((int) Math.pow(10, d - 1))) % 10);
}

目錄

返回頂部
主站蜘蛛池模板: 激情五月婷婷综合网 | 日韩小视频网站 | 亚洲日韩欧美视频 | 亚洲日本中文字幕天堂网 | 久久99国产亚洲高清观看首页 | 500短篇超污多肉推荐短视频 | 天天舔天天干天天操 | 亚洲一区二区三区成人 | 欧美一级爽快片淫片高清在线观看 | 免费a黄色| 国产一区二区三区欧美 | 午夜亚洲国产成人不卡在线 | 日韩免费精品 | 一级一级毛片免费播放 | free性欧美69 | 天天天天色| 白洁性荡生活l六 | 一级特黄特黄的大片免费 | 欧美日韩国产综合在线 | 日本草草视频在线观看 | 欧美一级看片免费观看视频在线 | 看全色黄大色黄女片爽毛片 | 性色在线视频 | 日本精品高清一区二区不卡 | 亚洲视频一二区 | 日韩大片高清播放器好 | 亚洲国产精品激情在线观看 | 欧美成人免费 | 色的视频在线观看免费播放 | 亚洲免费福利视频 | 成年男女免费大片在线观看 | 好紧好湿好黄的视频 | 欧美三级第一页 | 国产成人精品一区二区三区 | 一级女性全黄久久生活片 | 国产精品久久久久久一区二区三区 | 波多野结衣国产一区二区三区 | 一道本在线免费视频 | 九九精品视频免费 | 很黄很污的视频网站 | 亚洲欧美精品中文字幕 |