您的位置:首页 > 其它

对公司所有员工的年龄排序

2015-05-20 11:16 369 查看

思路

这道题其实与埃氏筛法 求素数 所用的思想是相同的,都是选取一个数组用来做标记,牺牲空间换取时间

如果给定一组数,要求判定这组数中哪些数是素数,则只需要根据埃氏筛法,判断该数的标记数组是true还是false即可。

java代码:

要求:时间复杂度O(n),只允许使用常量大小的辅助空间

package com.me;

import java.util.Arrays;

public class AgeSort {
public static void main(String[] args) {

int[] ages = new int[]{23,45,32,43,21,24,25,23,22,22,21};

AgeSort as = new AgeSort();

as.sortAge(ages);

System.out.println(Arrays.toString(ages));
}

public void sortAge(int[] ages){
int oldAge = 70;
int youngAge = 17;
int[] timeOfAge = new int[oldAge+1];

for(int i = youngAge; i <= oldAge; i++){
timeOfAge[i] = 0;
}

for(int j = 0; j < ages.length; j++){
int a = ages[j];
timeOfAge[a]++;
}

int index = 0;
for(int i = youngAge; i <= oldAge; i++){
for(int j = 0; j < timeOfAge[i]; j++){
ages[index] = i;
index++;
}
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: