打印在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])

让我们看一下这种排序算法,它使用两个嵌套循环。外部循环从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