0

これをオブジェクト配列と想像してください。オブジェクトは、タイプとスコアで構成されます。それに応じて並べ替える必要があるとします。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; 
         }
     }
 }

その後、降順でソートします。そこにはもっと良い解決策があると確信しています。これを解決する方法を共有できる人はいますか?

4

1 に答える 1