これをオブジェクト配列と想像してください。オブジェクトは、タイプとスコアで構成されます。それに応じて並べ替える必要があるとします。a または b のいずれかを入力し、a に優先順位を付け、その後に 0 ~ 100 のスコアを降順に並べます。
[0] [1] [2] [3] [4] [5] [6]
----------------------------------------------
|a | b | a | a | b | b | a |
|50 | 90 | 30 | 80| 20 | 30 | 60 |
----------------------------------------------
並べるとこんな感じになります。
[0] [1] [2] [3] [4] [5] [6]
----------------------------------------------
| a | a | a | a | b | b | b |
| 80 | 60 | 50 | 30 | 90 | 30 | 20 |
----------------------------------------------
最小限のコードで if else ステートメント、ループ (for、do while、while) のみを使用できます。私が考えたのは、aをグループ化して配列をソートし、続いて降順でソートすることだけです。ネストされた for ループを if else ステートメントで使用する
char first, second;
for (int i = 0; i < count; i++)
{
first = array[i].getType();
for (int j = 0; j < count; j++)
{
second = array[j].getType();
if ((first.compare('a') == 0) && (second.compare('a') != 0) ||
(first.compare('a') != 0) && (second.compare('a') == 0))
{
Obj temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
その後、降順でソートします。そこにはもっと良い解決策があると確信しています。これを解決する方法を共有できる人はいますか?