打印给定排序算法在 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

更新于:27-1 月-2020

74 次浏览

开启您的 职业生涯

完成课程即可获得认证

开始
广告