有两组数,一组是序号,另一组是与这个序号对应的值,未排序,类似于
  key value
  1    30
  2    90
  3    20
  4    50
 ...   ...
现在想按value的值大小进行降序排序,并输出对应的key值,不输出value的值,上例排好的结果为:
  2 
  4 
  1 
  3 
因为数组太大,不想用map,list之类,想直接用数组实现。请教算法如何设计?

解决方案 »

  1.   

    可以定义key,value两个数组。然后,可以用排序的方法实现,常用的较简单的排序方法有冒泡法、选择排序、插入排序、希尔排序、快速排序。
    不知道你的数组大概有多大?这个用在什么地方,对执行效率有何要求?或者,这个是一个练习题。
      

  2.   

    数组太大。。不想用map list 。。是什么概念?你绝得 map  或者list 装不下???至于你说的算法。。这种关联数组。。我觉得自己写得在好也没有map 的效率高!
      

  3.   

    数组太大,也可以用Map, list.
    如果一定要用数组,也可以,最简单是,public keyValue implements Comparable{
       int key;
       int value;   public int compareTo(keyValue  o){
             return this.value>o.value;
       }
    }
    把所有的数组元素,各new一个keyValue 对象, 把所有keyValue装到一个List(或是用一个大数组装也可以), 然后用Collections.sort(theList 或是 Arrays。sort(theArray)进行排序。最后遍历打印key就好了。