package com.ebiz;
import java.util.Scanner;
public class TestClass {
/**
* 对0-1000的整数进行排序(简易桶排序,后续会完善)
* 时间复杂度O(M+N)
* @param args
*/
public static void main(String[] args) {
System.out.println();
int[] book = new int[1001];
for(int i = 0; i < 1000; i++){
book[i] = 0;
}
Scanner s = new Scanner(System.in);
String str = null;
System.out.println("请输入:");
str = s.next();
System.out.println("您输入的是:" + str);
for(int m = 0; m < Integer.parseInt(str); m++){
Scanner num = new Scanner(System.in);
String key = num.next();
book[Integer.parseInt(key)] ++;
}
for(int n = 1000; n >= 0; n--){
for(int k = 0; k < book[n]; k++){
System.out.println("倒叙:" + n);
}
}
}
}
桶排序的时间复杂度为O(M+N),工作的原理是将数组分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。当要被排序的数组内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n))。但桶排序并不是 比较排序,他不受到 O(n log n) 下限的影响。