ソート
お世話になります。配列のソートなのですが、どうも思い通りの結果になりません。
配列の中から最大値と最小値を探し、最小値を配列0に、最大値を配列の最後に移動します。その2つ以外の数字の順番は変えません。
例)
{4,3,2,0,1,2} 最小値は0、最大値は4なので→{0,3,2,1,2,4}
{4,3,2,1} → {1,3,2,4}
{1,3,2,4,} → {1,3,2,4}
流れとしては、まず最小値を求め配列0に移動させ、次に最大値を求め配列の最後に移動させようと思います。
プログラムは以下のように組みました。
public int[] sortOfSort(int[] array) {
int count_min = 0;
int min = array[0];
for (int i = 0; i < array.length-1; i++) { // 最小値を求める
if (min > array[i + 1]) {
min = array[i + 1];
count_min++; // 最小値の配列のインデックスを確保
}
}
for (int k = count_min; k > 0; k--) { // 最小値の移動
int temp_min = array[k - 1];
array[k - 1] = array[k];
array[k] = temp_min;
}
int count_max = 0;
int max = array[0];
for (int j = 0; j < array.length-1; j++) { // 最大値を求める
if (max < array[j + 1]) {
max = array[j + 1];
count_max++; // 最大値の配列のインデックスを確保
}
}
for (int l = count_max; l < array.length-1; l++) { //最大値の移動
int temp_max = array[l + 1];
array[l + 1] = array[l];
array[l] = temp_max;
}
return array;
}
間違っているところがわかりましたら宜しくお願いします。
お礼
回答していただいて、ありがとうございます。 setMaximumの存在を見過ごしていました。 助かりました。