62,628
社区成员
发帖
与我相关
我的任务
分享
public class Test {
/*
* 输入:1,2,2,3,8,0,1,0,0,0,9,9,9,9,9,9,9
* 输出:9,0,1,2,3,8,4,5,6,7
*/
public static void main(String[] args) {
Integer[] array = new Integer[] { 1, 2, 2, 3, 8, 0, 1, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9 };
for (Integer entity : array)
System.out.print(entity + "\t");
System.out.println();
for (Integer number : completeDigital(sortByTimes(array)))
System.out.print(number + "\t");
}
private static List<Map.Entry<Integer, Integer>> sortByTimes(Integer[] array) {
Map<Integer, Integer> map = new TreeMap<Integer, Integer>();
for (Integer number : array) {
Integer times = map.get(number);
times = times == null ? 1 : ++times;
map.put(number, times);
}
List<Map.Entry<Integer, Integer>> list = new ArrayList<Map.Entry<Integer, Integer>>(map.entrySet());
Collections.sort(list, new Comparator<Map.Entry<Integer, Integer>>() {
@Override
public int compare(Entry<Integer, Integer> o1, Entry<Integer, Integer> o2) {
return o2.getValue() - o1.getValue();
}
});
return list;
}
private static List<Integer> completeDigital(List<Map.Entry<Integer, Integer>> list) {
List<Integer> retult = new ArrayList<Integer>();
List<Integer> temp = Arrays.asList(new Integer[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 });
for (Map.Entry<Integer, Integer> entry : list)
retult.add(entry.getKey());
for (Integer number : temp) {
if (!retult.contains(number))
retult.add(number);
}
return retult;
}
}
public class Test{
public static void main(String[] args){
int[] a = new int[]{1, 2, 2, 3, 8, 0, 1};
sort(a);
}
public static void sort(int[] a){
int[] tmp = new int[]{0,0,0,0,0,0,0,0,0,0};
for(int i = 0; i < a.length; i ++){
tmp[a[i]] ++;
}
int max = 0;
int maxp = 0;
for(int i = 0; i < tmp.length; i ++){
maxp = 0;
max = tmp[0];
//每次选出最大的数,打印其下标即可
for(int j = 1; j < tmp.length; j ++) {
if (max < tmp[j]) {
max = tmp[j];
maxp = j;
}
}
System.out.print(maxp + " ");
tmp[maxp] = -1;
}
}
}