int [] i={1,3,1,0,5,0,1,2,2};
一个数组 把重复在多放前面  个数相同的按从小到大排序排序后的结果 1,0,2,3,5
那位老大帮忙解决下啊谢谢

解决方案 »

  1.   

    刚写完
    package com.haojia.test;import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    import java.util.Map.Entry;public class T { public static void sort(int[] data) {
    // 用map记录次数
    Map<Integer, Integer> map = new HashMap<Integer, Integer>();
    for (int i = 0; i < data.length; i++) {
    if (map.get(data[i]) == null) {
    map.put(data[i], 1);
    } else {
    map.put(data[i], map.get(data[i]) + 1);
    }
    }
    System.out.println(map); // 把map里的entry加到list里(为了用Collections.sort方法排序)
    List<Entry<Integer, Integer>> list = new ArrayList<Entry<Integer, Integer>>();
    for (Entry<Integer, Integer> entry : map.entrySet()) {
    list.add(entry);
    }
    System.out.println(list); // 对值排序
    Collections.sort(list, new Comparator<Entry<Integer, Integer>>() {
    @Override
    public int compare(Entry<Integer, Integer> e1,
    Entry<Integer, Integer> e2) {
    return e1.getValue() < e2.getValue() ? -1 : e1.getValue() > e2
    .getValue() ? 1 : 0;
    }
    });
    System.out.println(list); // 打印结果
    for (int i = list.size() - 1; i >= 0; i--) {
    System.out.print(list.get(i).getKey() + " ");
    }
    } public static void main(String[] args) {
    int[] i = { 1, 3, 1, 0, 5, 0, 1, 2, 2 };
    sort(i);
    }
    }
      

  2.   

    这是我System 的结果 
    相同个数的还是没排序
    1,3,1,0,5,0,1,2,2,
    1 0 2 5 3 
      

  3.   

    这样可以了吧就是值相同的时候按键排序
    package com.haojia.sample;import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    import java.util.Map.Entry;/**
     * 对map的值排序
     * 
     * @author July
     * 
     */
    public class SortByMapsValues { public static void sort(int[] data) {
    // 用map记录次数
    Map<Integer, Integer> map = new HashMap<Integer, Integer>();
    for (int i = 0; i < data.length; i++) {
    if (map.get(data[i]) == null) {
    map.put(data[i], 1);
    } else {
    map.put(data[i], map.get(data[i]) + 1);
    }
    }
    System.out.println(map); // 把map里的entry加到list里(为了用Collections.sort方法排序)
    List<Entry<Integer, Integer>> list = new ArrayList<Entry<Integer, Integer>>();
    for (Entry<Integer, Integer> entry : map.entrySet()) {
    list.add(entry);
    }
    System.out.println(list); // 对值排序
    Collections.sort(list, new Comparator<Entry<Integer, Integer>>() {
    @Override
    public int compare(Entry<Integer, Integer> e1,
    Entry<Integer, Integer> e2) {
    return e1.getValue() < e2.getValue() ? 1 : e1.getValue() > e2
    .getValue() ? -1 : (e1.getKey() < e2.getKey() ? -1 : e1
    .getKey() > e2.getKey() ? 1 : 0);
    }
    });
    System.out.println(list); // 打印结果
    for (Entry<Integer, Integer> entry : list) {
    System.out.print(entry.getKey() + " ");
    }
    } public static void main(String[] args) {
    int[] i = { 1, 3, 1, 0, 5, 0, 1, 2, 2 };
    sort(i);
    }
    }
      

  4.   

    虽然没分啦,但既然写啦,发一下给同龄人吧,我是纯数组流:
                    int [] i={1,3,1,0,5,0,1,2,2,5,3,3,3,6}; 
    int [] count = new int[i.length];
    int [] tmp = new int[i.length]; 
    /**
     * 统计重复个数,tmp[i]对应个数count[i]
     */
    Arrays.sort(i,0,i.length);
    tmp[0] = i[0];
    int index = 0;
    for(int k=0;k<i.length;k++) {
    if(i[k] != tmp[index]){
    index++;
    tmp[index] = i[k];
    }
    count[index]++;
    }

    /**
     * 计算出count[j],在count中排第几,存在position[j]中
     * 因为count[j],对应tmp[j],便知道了tmp[j]应排位置即position[j]
     * 于是一个循环,finalData[position[j]] = tmp[j] 便得到解
     */
    int []position = new int[index+1];
    for(int j=0;j<index+1;j++){
    for(int k=j+1;k<index+1;k++){
    if(count[k]>count[j]){
    position[j]++;
    }else{
    position[k]++;
    }
    }
    }
    int []finalData = new int[index+1];
    for(int k=0;k<index+1;k++) {
    finalData[position[k]] = tmp[k];
    }
    //show
    for(int k=0;k<finalData.length;k++) {
    System.out.print(finalData[k]+" ");
    }