単一行のソート

通常の「バブル」があります。

for(int i = 0; i < n - 1; i++ ) for(int j = i + 1; j < n; j++) if(ar[i] > ar[j]) { int temp = ar[i]; ar[i] = ar[j]; ar[j] = temp; }
      
      







タスク番号1:一時変数を取り除きます。 これは次のように行われます。



 ar[i] ^= ar[j] ^= ar[i] ^= ar[j];
      
      







タスク番号2:ifを取り除きます。

さらにシンプルに:

 (ar[i] > ar[j]) ? ar[i] ^= ar[j] ^= ar[i] ^= ar[j] : 0;
      
      







タスク番号3:基本。 jの内側のforループを取り除きます。

これを行うには:1)jからnに反復し、条件で常にtrueを返します2)jの反復全体が経過した場合にのみアルゴリズムの終了の条件を確認します

3)条件を確認するときは、j = i + 1、i = i + 1を実行します。

結果は次のとおりです。

 for(int i = 0, j = 0; j < n ? 1 : i < n - 1; j = j < n ? ((ar[i] > ar[j] ? ar[i] ^= ar[j] ^= ar[i] ^= ar[j] : 0), ( j + 1 )) : ++i //  j=n,     );
      
      







ソースコード



All Articles