public class Demo {
/*
* 计数排序 创建辅助数组 对于辅助数组的所在索引进行对应值加一
*
* 题目: 公司现在要对几万员工的年龄进行排序,因为公司员工的人数非常
多,所以要求排序算法的效率要非常高,你能写出这样的程序吗
输入:输入可能包含多个测试样例,对于每个测试案例,
-输入的第- -行为- 一个整数n(1<= n<=1000000) :代表公司内员工的人数。
-输入的第二行包括n个整数:代表公司内每个员工的年龄。其中,员工年龄
age的取值范围为(1<=age<=99)。
输出:对应每个测试案例,
-请输出排序后的n个员工的年龄,每个年龄后面有-一个空格。
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] ages = {22,31,43,65,45,22,78,9,56,23,56,28,72,41,66,46};
int N = 5;
System.out.println(getN(ages,N));
Arrays.sort(ages);
for (int i : ages) {
System.out.print(i + " ");
}
}
private static int getN(int[] ages, int n) {
// TODO Auto-generated method stub
int num = 0;
int targe = 0;
int[] helpage = new int[100];
for (int j = 0; j < ages.length; j++) {
helpage[ages[j]]++;
}
for (int i = 0; i < helpage.length; i++) {
num+=helpage[i];
if (num>=n) {
targe = i;
break;
}
}
return targe;
}
}
排序算法---计数排序
最新推荐文章于 2024-09-16 09:59:01 发布