桶排序
桶排序的特点是时间复杂度比较低,运算起来非常快,逻辑也很简便,写起来很容易。但是空间复杂度非常大,不适合大型数据,因为大型数据浪费的内存空间特别多。而且使用桶排序时数据类型比较单一,不适合复杂情况
通过下面一个例题理解桶排序
**期末考试完了老师要将同学们的分数按照从高到低排序。小哼的班上只有5个同学,这5个同学分别考了 5 分、3 分、 5 分、2 分和 8 分,哎考得真是惨不忍睹(满分是 10 分)。接下来将分数进行从小到大排序, 排序后是 8 5 5 3 2。你有没有什么好方法编写一段程序,让计算机随机读入 5 个数然后将这 5 个数从小到大输出?**
解析: 创建一个长度为11的数组,下标分别是0~10,根据满分是10分,所以每一个数组下标都是对应一个分数。每个同学考的分值出现一次,就在与分值相对应的下标表示的值加1.
package _4_9_test;
import java.util.Scanner;
/*
* 桶排序
**/
public class EightyThree {
public static void main(String[] args) {
// TODO Auto-generated method stub
int score[] = new int[11];
Scanner scanner = new Scanner(System.in);
// 输入学生个数
int n = scanner.nextInt();
// 输入学生成绩
int num;
for(int i=0;i<n;i++) {
num = scanner.nextInt();
score[num]++;
}
// 按从小到大的顺序输出学生分数
for(int i=0;i<11;i++) {
for(int j=0;j<score[i];j++) {
System.out.print(i+" ");
}
}
}
}