Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

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