ソート
お世話になります。配列のソートなのですが、どうも思い通りの結果になりません。
配列の中から最大値と最小値を探し、最小値を配列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;
}
間違っているところがわかりましたら宜しくお願いします。
お礼
ご回答ありがとうございます。 問題はA点とE点の最小カットとA~Eまでの最大フローです。アルファベットは自分で付け足したものですが逆にわかりにくくなってしまいましたでしょうか。