C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

指定された並べ替えアルゴリズムがC++で失敗した場合を出力します


この問題では、並べ替えアルゴリズムと数値nが与えられます。私たちのタスクは、アルゴリズムで並べ替えることができなかったn個の要素の配列を出力することです。つまり、アルゴリズムは失敗します。

アルゴリズム

loop i from 1 to n-1
   loop j from i to n-1
   if a[j]>a[i+1]
      swap(a[i], a[j+1])

この並べ替えアルゴリズムを見てみましょう。2つのネストされたループを使用しています。外側の要素は1からn-1で始まり、内側の要素はiからn-1で始まり、各反復で内側のループ要素と外側のループ要素の値をチェックし、順序が正しくない要素を交換します。

したがって、要素が逆の順序でソートされている場合、このアルゴリズムは失敗します。また、n<=2の場合にのみ解を見つけることができます。

So, for n = 5.
Output : 5 4 3 2 1
Time complexity − O(N)

ソリューションの実装を示すコード

#include <iostream>
using namespace std;
void invalidCase(int n) {
   if (n <= 2) {
      cout << -1;
      return;
   }
   for (int i = n; i >= 1; i--)
      cout<<i<<" ";
}
int main() {
   int n = 6;
   cout<<"The case in which the algorithm goes invalid for "<<n<<" element array is :\n";
   invalidCase(n);
   return 0;
}

出力

6要素配列でアルゴリズムが無効になる場合は-

6 5 4 3 2 1

  1. C ++の指定された範囲[L、R]のすべての要素のXOR

    この問題では、範囲を示す2つの整数LとRが与えられます。私たちのタスクは、範囲[L、R]内のすべての要素のxorを見つけることです。 問題を理解するために例を見てみましょう 入力 − L =3、R =6 説明 − 3 ^ 4 ^ 5 ^ 6 = この問題を解決するために、RのMSBを見つけます。答えのMSBはRより大きくなりません。ここで、0からMSBまでのビット数のカウントのパリティを見つけます。 ここで、i番目のビットのパリティカウントを見つけるために、i番目のビットの状態が2番目の数値ごとに変化することがわかります。 LからRの範囲に設定されたすべてのi番目のビットについても同

  2. 与えられた行列をC++で反時計回りのスパイラル形式で印刷します

    この問題では、2次元の行列が与えられます。そして、私たちのタスクは、から反時計回りのスパイラルで行列の要素を印刷することです。 反時計回りのスパイラルフォーム −これは、左上から始まり、反時計回りに最初の右下から左上に向かって進むスパイラルトラバーサルです。 反時計回りのトラバーサルは159 13 14 15 16 12 8 4 3 2 6 10117になります。 問題を理解するために例を見てみましょう Input:    2 4 6    1 7 9    5 0 3 Output: 2 1 5 0 3 9 7 この問