二次元配列の選択ソートのアルゴリズムは何ですか? どこでも 2D 配列について調べて読みましたが、シンプルで直接的なものは何も見つからないため、フォーラムで質問することにしました。(1D 配列の並べ替えを変更して 2D 配列にする方法が頭に浮かびません!!)
たとえば、次のようになります。
name ----- crime ----- year
name1 ---- arson ----- 1996
name2 ---- theft ----- 2003
name3 ---- arson ----- 1976
name4 ---- theft ----- 2010
これになります:
name ----- crime ----- year
name1 ---- arson ----- 1996
name3 ---- arson ----- 1976
name2 ---- theft ----- 2003
name4 ---- theft ----- 2010
どんな助けでも素晴らしいでしょう!ありがとう!
編集
選択ソート用のコードは次のとおりです。それらのほとんどは適切に編成されていますが、数行で、それが属していない「放火」があり、それがなぜなのかわかりません. これが私のコードです:
for(i = 0; i < 10; i++){
smallest = i;
for(j = i; j < 10; j++){
if(criminals[i][1].compareTo(criminals[j][1]) > 0){
smallest = j;
}
}
temp = criminals[i][1];
criminals[i][1] = criminals[smallest][1];
criminals[smallest][1] = temp;
}
//output
for(i = 0; i < 10; i++){
System.out.println(criminals[i][0] + " - " + criminals[i][1] + " - " + criminals [i][2]);
}
そして、これは私の入力と出力です:
Not sorted list:
Al Capone - arson - 2009
Slippery Sal - theft - 2001
Nada - arson - 1987
Slippery Sal - theft - 1999
Salma - assault - 2010
Scooby Doo - theft - 1998
Velma - assault - 1991
Daphne - arson - 1976
Fred - assault - 2003
Shaggy - arson - 2007
Sorted list (by crime):
Al Capone - arson - 2009
Slippery Sal - arson - 2001
Nada - arson - 1987
Slippery Sal - assault - 1999
Salma - arson - 2010
Scooby Doo - assault - 1998
Velma - assault - 1991
Daphne - theft - 1976
Fred - theft - 2003
Shaggy - theft - 2007