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