2016-12-02 11 views
0

int array[8]は0から9までのランダムな値ではありません。ソートされていません。 配列のインデックスを別の配列の中で、最も高い値から順に格納したいと考えています。配列のインデックスを値として新しい配列にコピーし、最高の値でソートします。 JAVA

例えば入力配列 - {9,8,7,3,6,5,2,4}

出力アレイ - 新しい配列の{0,1,2,4,5,7,3,6}

0インデックス値から始まる最初の配列(降順)から最高値とインデックスに等しいです。

私はここに新しいです、それは私の最初の投稿です、そして、私はまだ寛容にしてください。

私は最初の配列をソートしたくありません。 (なぜ私に聞かないでください:O)

おかげ

+1

を参照してくださいあなたが何かをしようとしたことがありますか?今、問題はかなり幅広いので(これはさまざまな方法で行うことができます)、あなたの質問は閉鎖されているかもしれません。あなたがこれを解決しようとする試みを共有して、あなたが問題を抱えているものが何であるかを述べれば、よりよいでしょう。 – Gendarme

+0

いくつかのコードを見せてください! –

+0

彼にドキュメンテーションを見せて、彼は失われています。 –

答えて

2

情報TreeMap constructorTreeMap valuesを、またComparator

// treemap is sorted by the keys. Supplementary, you can use your own 
// comparator for a custom order 
TreeMap<Integer, Integer> valuesToIndexes= 
    new TreeMap<>(new Comparator<Integer>() { 
    public int compare(Integer a, Integer b) { 
     return b-a; // in the inverse order 
    } 
    }) 
; 
for(int i=0; i<arr.length; i++) { 
    valuesToIndexes.put(arr[i], i); 
} 
// iterating the values of a map will be done in the order of the map's keys 
// Since the key is the array value in reverse (and the value is the index) 
// we'll be outputting the array indexes in the decreasing order of its values 
for(Integer v : valuesToIndexes.values()) { 
    System.out.println(v); 
} 
0
//input array 
    Integer array[] = {9, 8, 7, 4, 5, 6, 1, 2}; 
    // originalOrder 
    List<Integer> originalOrder = new ArrayList<>(Arrays.asList(array)); 
    //array to sort 
    List<Integer> arrayAsList = Arrays.asList(array); 

    Collections.sort(arrayAsList, new Comparator<Integer>() { 
     @Override 
     public int compare(Integer t, Integer t1) { 
      return t1.compareTo(t); 
     } 
    }); 

    Integer outputArray[] = new Integer[array.length]; 

    for (int i = 0; i < arrayAsList.size(); i++) { 
     Integer integer = arrayAsList.get(i); 
     int index = originalOrder.indexOf(integer); 
     outputArray[i] = index; 

    } 

    // test 
    for (Integer integer : outputArray) { 
     System.out.println(integer); 
    } 
関連する問題