package t1;
public class Sort {
//O(n)的排序方法,对公司的人员年龄进行排序,借助数组长度为100的空间换来了O(n)的时间度
static void sortages(int ages[],int len){
if(ages == null || len <= 0) {
return ;
}
//定义最大年龄
final int OldAge = 99;
//定义一个数组,记录该年龄出现的次数
int timesOfAge[] = new int[OldAge+1] ;
for(int i=0;i<OldAge;i++) {
timesOfAge[i] = 0;
}
//计算一个年龄出现的次数
for(int i=0;i<len;i++) {
int age = ages[i];
if(age<0 || age > 100) {
System.out.println("invalid input");
return ;
}
++timesOfAge[age];
}
int index = 0;
//遍历ages数组,根据年龄出现的次数对其下标进行排序
for(int i=0;i<OldAge;i++) {
for(int j=0;j<timesOfAge[i];j++) {
//根据年龄出现次数计算出其在数组中的下标
ages[index] = i;
index++;
}
}
}
public static void main(String[] args) {
int a[] = {1,2,4,5,3,4,55,23,33,2,21,23,11,54,66,22,12};
sortages(a,17);
for(int i : a)
System.out.print(i+",");
}
}
实例分析:
index = 0;