箱排序:也称桶排序。
基本思想:设置多[k]个箱,依次把a[1],a[2],a[3]…..a[n]按其键值为k放入k个箱中,依次按1-k把k个箱首尾相连。这样就排好序了。
例如:把一副52张牌按照点数排序,可以设置13个箱依次表示为1-13,把点数为A的放到1号箱,点数为2-10的分别放入2-10号箱,把J,Q,K分别放入11-13号箱,这样依次连接1-13号箱,就排好序了。
基数排序:
基数排序的特征:基数排序的每一个键都由d个分量组成ki1,ki2,ki3…ki(d-1),这d个分量每个分量代表一个独立的关键字。如:扑克牌中的点数和花色。
排序思想:从低位到高位依次对kj(j=d-1,d-2,…,0)进行箱排序。在d趟箱排序中,所需的箱子数就是基数rd,这就是"基数排序"名称的由来。
例子:排序下列数73, 22, 93, 43, 55, 14, 28, 65, 39, 81,
按个位分别把需要排序的数放到0-9的桶中。
0 1 2 3 4 5 6 7 8 9
81 22 73 14 55 28 39
93 65
接着把这些桶中的数值按照桶的顺序串起来,如:81, 22, 73, 93, 43, 14, 55, 65, 28, 39
按十位分别数放到0-9的桶中,如:
0 1 2 3 4 5 6 7 8 9
14 22 39 43 55 65 73 81 93
28
接着把这些桶中的数值按照桶的顺序串起来,如:14, 22, 28, 39, 43, 55, 65, 73, 81, 93
这样就排好序了。
代码实现:
public static void sort(int[] number, int d) {
int k = 0;
int n = 1;
int m = 1;
int[][] temp = new int[number.length][number.length];
int[] order = new int[number.length];
while (m <= d) {
for (int i = 0; i < number.length; i++) {
int lsd = ((number[i] / n) % 10);
temp[lsd][order[lsd]] = number[i];
order[lsd]++;
}
for (int i = 0; i < d; i++) {
if (order[i] != 0)
for (int j = 0; j < order[i]; j++) {
number[k] = temp[i][j];
k++;
}
order[i] = 0;
}
n *= 10;
k = 0;
m++;
}
}
分享到:
相关推荐
《计算机程序设计艺术》-第1卷-基本算法(第3版)-中文版 《计算机程序设计艺术》-第2卷-半数值算法(第3版)-中文版 《计算机程序设计艺术》-第3卷-排序与查找(第2版)-中文版
计算机程序设计艺术-第3卷-排序与查找(第2版)-中文版.pdf
计算机程序设计艺术-高德纳
计算机程序设计艺术-第2卷-半数值算法(第3版)-part-1-中文版.pdf
计算机程序设计艺术-第2卷-半数值算法(第3版)-part-2-中文版.pdf
计算机程序设计艺术-第3卷-排序与查找(第2版)-part-2-中文版.pdf
计算机程序设计艺术-第3卷-排序与查找(第2版)-part-1-中文版.pdf
计算机程序设计艺术-------Donald.E.Knuth----------算法“倚天屠龙”双剑
计算机程序设计艺术-第2卷-半数值算法(第3版)-中文版.pdf
计算机程序设计的理论经典巨作,凡是大师都看这本书
计算机程序设计艺术2 第三版 英文版 生成所有元组和排列
计算机程序设计艺术 它向程序员提供了盼望已久的MMIX,代替原来的MIX的一个以RISC为基础的计算机,并且描述了MMIX汇编语言。
计算机程序设计艺术-第1卷-基本算法(第3版)-part2-中文版.pdf
三卷中文名为《基本算法》 《半数值算法》及《排序与查找》 本书内容博大精深 作者因为三卷书获得美国计算机协会1974年图灵奖(该奖被国际公认为计算机科学领域的最高奖项) ">《计算机程序设计艺术》重译自Donald E...
三卷中文名为《基本算法》 《半数值算法》及《排序与查找》 本书内容博大精深 作者因为三卷书获得美国计算机协会1974年图灵奖(该奖被国际公认为计算机科学领域的最高奖项) ">《计算机程序设计艺术》重译自Donald E...
多应用型计算机程序设计开发-程序设计-设计
计算机程序设计--24点游戏设计
该资源系计算机程序设计艺术1-3卷,页面清晰度较好,内容也十分实用。
计算机程序设计的理论经典巨作,凡是大师都看这本书