题目: 对公司所有员工的年龄排序,总共几万人,要求实现一个排序算法,要求时间效率为O(n),可以使用辅助内存,只允许使用常量大小的辅助空间
分析:员工的年龄假设为0~10,故辅助数组为timeOfAge[10],保存每个年龄出现的次数
public class SortAges { public static void sortAge(int age[]){ final int oldAge=10; int timesOfAge[]=new int[oldAge]; int len=age.length; //timeofage保存重复出现的次数 for (int i = 0; i <len ; i++) { timesOfAge[age[i]]++; } int index=0; for (int i = 0; i <oldAge ; i++) { for (int j = 0; j <timesOfAge[i] ; j++) { age[index]=i; index++; } } } public static void main(String[] args) { int[] ages=new int[]{2,4,3,2,7,5,3}; sortAge(ages); for (int i = 0; i <ages.length ; i++) { System.out.println(ages[i]); } } }