이 문제에서는 정렬 알고리즘과 숫자 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