Java 按数组值排序索引

Java 按数组值排序索引,java,arrays,Java,Arrays,我有一个整数数组,我需要一些代码为我生成一个具有以下规范的数组: 第一项是整数值最大值的索引 第二项是小于max的最大值的索引 最后一项是最小整数值的索引 假定 int totalvalue[] = {100, 120, 90, 110} 我想要这个 {1,3,0,2} 我将借用最近从此处删除的其他人的代码;-) publicstaticvoidmain(字符串[]args){ int数组[]={9010090110}; Map valueIndexMap=新HashMap(); int指

我有一个整数数组,我需要一些代码为我生成一个具有以下规范的数组:

  • 第一项是整数值最大值的索引
  • 第二项是小于max的最大值的索引
  • 最后一项是最小整数值的索引
假定

int totalvalue[] = {100, 120, 90, 110}
我想要这个

{1,3,0,2}


我将借用最近从此处删除的其他人的代码;-)

publicstaticvoidmain(字符串[]args){
int数组[]={9010090110};
Map valueIndexMap=新HashMap();
int指数=0;
for(int条目:数组)
valueIndexMap.put(条目,索引+);
//在此对valueIndexMap.key执行排序算法
整数[]新数组=新整数[array.length];
for(int i=0;i
这里有一些

研究它们是很重要的,因为它们是CS

的基础。
祝你好运你可以做到:-

public static void main(String[] args) {

        Integer totalvalue[] = { 100, 120, 90, 110 };

        List<Integer> original = Arrays.asList(totalvalue);

        List<Integer> copy = new ArrayList<Integer>(original);

        Collections.sort(copy, new Comparator<Integer>() {

            @Override
            public int compare(Integer intger1, Integer intger2) {

                return intger2.compareTo(intger1);
            }
        });

        int[] finalArray = new int[totalvalue.length];
        for (int i = 0; i < totalvalue.length; i++) {
            finalArray[i] = original.indexOf(copy.get(i));
        }
        System.out.println(Arrays.toString(finalArray));
    }
publicstaticvoidmain(字符串[]args){
整数totalvalue[]={100,120,90,110};
List original=Arrays.asList(totalvalue);
列表副本=新阵列列表(原件);
Collections.sort(copy,newcomparator(){
@凌驾
公共整数比较(整数整数整数1、整数整数整数2){
返回intger2.compareTo(intger1);
}
});
int[]finalArray=新的int[totalvalue.length];
对于(int i=0;i
这与几分钟前结束的问题一模一样。您需要一个排序算法。您可以先对数组进行排序,然后在totalvalue[]中找到该值并打印出索引。“请帮我做家庭作业。”也许您可以通过自己做这件事了解更多。@user3284107但请记住,如果数组有DUP,他仍然必须跟踪索引。您认为这可以如何解决?你能想出一些伪代码吗?这怎么比最近删除的代码更好?它不适用于数组中的非唯一值。好吧,它比使用错误的方式使用array.sort()要好,因为它最初是这样做的:-)至少,这个答案关注的是真正的问题(处理间接寻址),而没有提供一个做家务的包罗万象的答案,我把它写在一个文本板上。让我把它改成finalArray。别介意它的语义
public static void main(String[] args) {

        Integer totalvalue[] = { 100, 120, 90, 110 };

        List<Integer> original = Arrays.asList(totalvalue);

        List<Integer> copy = new ArrayList<Integer>(original);

        Collections.sort(copy, new Comparator<Integer>() {

            @Override
            public int compare(Integer intger1, Integer intger2) {

                return intger2.compareTo(intger1);
            }
        });

        int[] finalArray = new int[totalvalue.length];
        for (int i = 0; i < totalvalue.length; i++) {
            finalArray[i] = original.indexOf(copy.get(i));
        }
        System.out.println(Arrays.toString(finalArray));
    }