有一个数组 int[] a=new int[]{30, 43, 67, 89, 13 ,90 ,65, 76, 58, 33};
需要对其排序并输出排序后的结果和 原来数组元素的下标,怎么写代码?
输出结果是: 
  90      6
  89      4
  76      8
  67      3
  65      7
  58      9
  43      2
  33     10
  30      1
  13      5 排序好排,可是输出原数组的下标就不知道咋写?

解决方案 »

  1.   

    先用map存储<值,索引>,拍完须后从map中根据引值取出原理的索
      

  2.   

    public static void main(String[] args) {
    int[] a=new int[]{30, 43, 67, 89, 13 ,90 ,65, 76, 58, 33};
    int temp;
    Map<Integer,Integer> map = new HashMap<Integer,Integer>();

    for(int i =0;i<a.length;i++){
    map.put(a[i], i);
    }
    for(int i =0;i<a.length;i++){

    for(int j=0;j<a.length-i-1;j++){
    if(a[j]<a[j+1]){
    temp=a[j];
    a[j]=a[j+1];
    a[j+1]=temp;

    }
    }
    }
    System.out.println(map);
    for(int i =0;i<a.length;i++){
    System.out.println(a[i]+" "+map.get(a[i]));

    }

    }
      

  3.   

    一个TreeMap直接搞定public static void main(String[] args) {
    int[] a = new int[] { 30, 43, 67, 89, 13, 90, 65, 76, 58, 33 };
    TreeMap<Integer, Integer> map = new TreeMap<Integer, Integer>();
    for (int i = 0; i < a.length; i++) {
    map.put(a[i], i);
    } Set keys = map.entrySet();
    Iterator iter = keys.iterator();
    while (iter.hasNext()) {
    Map.Entry<Integer, Integer> me = (Map.Entry<Integer, Integer>) iter.next();
    System.out.println(me.getKey() + "    " + me.getValue()); } }
      

  4.   

    即然使用了map 为什么不用treemap呢?private static void sortArray(){
    int[] a=new int[]{30, 43, 67, 89, 13 ,90 ,65, 76, 58, 33};
    Map<Integer,Integer> map = new TreeMap<Integer,Integer>();
    for(int i=0;i<a.length;i++){
    map.put(a[i], i);
    }
    for(Integer key : map.keySet()){
    System.out.println(key+"\t"+map.get(key));
    }
    }
      

  5.   

    public class razi {
    //这是用两个数组做的
    public static void main(String[] args) {

    int[] a=new int[]{30, 43, 67, 89, 13 ,90 ,65, 76, 58, 33};
    int[] b=new int[]{1,2,3,4,5,6,7,8,9,10};

    for(int i = 0;i<a.length;i++){
    for(int j = i+1;j<a.length;j++){
    if(a[i]<a[j]){
    int t = a[i];
    a[i] = a[j];
    a[j] = t;

    int p = b[i];
    b[i] = b[j];
    b[j] = p;
    }
    }
    }

    for(int k = 0;k<a.length;k++){
    System.out.println(a[k]+"  "+b[k]);
    }
    }
    }
      

  6.   

    用TreeMap可以在存储的时候自动排序,但是数组中元素不能重复,因为map是通过键-值插入的
    TreeMap<Integer, Integer> tm = new TreeMap<Integer, Integer>();
    int[] a = new int[]{30, 43, 67, 89, 13 ,90 ,65, 76, 58, 33};
    for(int i = 0;i < a.length;i++){
        tm.put(a[i],i);
    }
    System.out.print(tm);
      

  7.   


                    int i;
    int j;
    int t;
    int[] a={30, 43, 67, 89, 13 ,90 ,65, 76, 58, 33};
    int[] b={1,2,3,4,5,6,7,8,9,10};
    for(i=0;i<a.length-1;i++)
    {
    for(j=i+1;j<a.length;j++)
    {
    if(a[i]>a[j])
    {
    t=a[i];
    a[i]=a[j];
    a[j]=t;
    t=b[i];
    b[i]=b[j];
    b[j]=t;
    }
    }
    }
    for(i=0;i<a.length;i++)
    {
    System.out.println(a[i]+" "+b[i]);
    }
      

  8.   


    Integer[] a = new Integer[] { 30, 43, 67, 89, 13, 90, 65, 76, 58, 33 };
    Map<Integer, Integer> map = new TreeMap<Integer, Integer>();
    for (int i = 0; i < a.length; i++) {
    map.put(a[i], i);
    } for (Integer key : map.keySet()) {
    System.out.println(key + "\t" + map.get(key));
    } Arrays.sort(a, new Comparator() {
    @Override
    public int compare(Object a1, Object b1) {
    int i1 = (Integer)a1;
    int i2 = (Integer)b1;
    return i2-i1;
    }
    });
    for (Integer key : a) {
    System.out.println(key + "\t" + map.get(key));
    }
      

  9.   

    用map还存储,键就是下标,值就是数组的值