出力時に元の配列での位置を表示できるように、バブルソートの代わりにどのソート手法を使用して整数の配列をソートできますか??
入力 4 5 3 6 1
出力
INDEX : VALUE
5 : 1
3 : 3
1 : 4
2 : 5
4 : 6
キーが配列内の値で、値がインデックス + 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}
注: これは、元のリストに重複がない場合にのみ機能します
ホルダー オブジェクトを使用したソリューション:
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));
}
}