2

出力時に元の配列での位置を表示できるように、バブルソートの代わりにどのソート手法を使用して整数の配列をソートできますか??

入力 4 5 3 6 1

出力

   INDEX : VALUE
     5   :   1
     3   :   3
     1   :   4
     2   :   5
     4   :   6
4

2 に答える 2

5

キーが配列内の値で、値がインデックス + 1 である a を使用できTreeMapます。必要なことは自動的に行われます。

サンプルコード:

public static void main(String[] args) throws ParseException {
    int[] array = new int[] {4, 5, 3, 6, 1};
    Map<Integer, Integer> sortedMap = new TreeMap<Integer, Integer>();

    for (int i = 0; i < array.length; i++) {
       sortedMap.put(array[i], i + 1);
    }
    System.out.println(sortedMap);
}

出力:

{1=5, 3=3, 4=1, 5=2, 6=4}

注: これは、元のリストに重複がない場合にのみ機能します

于 2012-07-02T14:18:39.697 に答える
1

ホルダー オブジェクトを使用したソリューション:

public class IntWithIndex implements Comparable<IntWithIndex>
{
  public final Integer value;
  public final int index;

  public IntWithIndex(int value, int index) { 
    this.value = value; 
    this.index = index; 
  }

  public int compareTo(IntWithIndex other) { 
    return this.value.compareTo(other.value); 
  }
  public String toString() { 
    return String.format("[%d,%d]", value, index); 
  }

  public static void main(String[] args) {
    final IntWithIndex[] ts = new IntWithIndex[5];
    int i = 0;
    for (int x : new int[] { 4, 5, 3, 6, 1 }) 
      ts[i] = new IntWithIndex(x, i++);
    Arrays.sort(ts);
    System.out.println(Arrays.toString(ts));
  }
}
于 2012-07-02T14:26:02.700 に答える