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

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

基數排序面試題

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久久精品午夜剧场免费 | 一本大道香蕉视频在线观看 | 国产日韩精品一区二区 | 中文字幕免费视频精品一 | m乳娘调教人h | 香港一级纯黄大片 | 欧美日本在线观看 | 丝袜视频在线 | 好男人www社区影视免费观看 | 九九热视频免费 | 1024日本| 欧美一级特黄刺激大片视频 | 欧美成人免费tv在线播放 | 欧美日韩亚洲天堂 | 你懂的网站在线观看 | 亚洲日产国码 | 人人看人人爽 | 日韩成人片 | 日韩在线看片中文字幕不卡 | 午夜精品久久久久久久第一页 | 国产欧美一区二区三区在线 | 国产专区日韩精品欧美色 | 精品欧美一区二区三区 | 日本国产亚洲 | 小明成人永久视频在线观看 | 欧美成人在线观看 | 亚洲免费人成 | 日韩久久一级毛片 | 国产成人精品免费视频大全办公室 | 天堂中文在线网 | 新婚第一次一级毛片 | 又黄又爽又猛的视频免费 | 欧美13一14周岁a在线播放 | 欧美线在线精品观看视频 | 日批视频在线免费观看 | 久久青草免费97线频观 | 毛片看看 |