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