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