大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

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

基數排序面試題

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久久精品免费看国产高清 | 久久久国产精品免费看 | 精品无码久久久久久国产 | 日本大片免费一级 | 亚洲另类 专区 欧美 制服 | 亚洲欧美综合一区二区三区四区 | 高清在线精品一区二区 | 老司机午夜精品视频 | 中文字暮文字暮 | 91精品国产综合久久福利 | 日本免费一区二区三区 | 亚洲美女性视频 | 亚洲精品9999久久久久 | 日本一级一片免费 | 全免费午夜一级毛片一级毛 | 国产精久久一区二区三区 | 四虎国产精品免费视 | 国产色在线视频 | 免费国产不卡午夜福在线 | h片在线免费 | 国产日韩精品一区在线不卡 | 久久久久久久综合色一本 | 亚洲精品久久一区影院 | 日韩永久免费进入2015 | 久草久操 | 欧美成人爽毛片在线视频 | 成人精品视频在线 | jzz欧美 | 精品久久中文字幕有码 | 成人黄色免费 | 爱爱视频免费网站 |