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

BogoSort 또는 순열 정렬을 위한 C++ 프로그램?

<시간/>

여기에서 보고 정렬(Bogo Sort)이라는 또 다른 정렬 알고리즘을 볼 수 있습니다. 이 정렬은 순열 정렬, 멍청한 정렬, 느린 정렬 등으로도 알려져 있습니다. 이 정렬 알고리즘은 특히 비효율적인 정렬 기술입니다. 이것은 생성 및 테스트 패러다임에 속합니다. 정렬될 때까지 순열을 반복적으로 생성합니다. 개념은 매우 간단합니다. 목록이 정렬될 때까지 요소를 섞습니다.

알고리즘

bogoSort(배열, n)

Begin
   while the arr is not sorted, do
      shuffle arr
   done
End

예시

#include<iostream>
#include<cstdlib>
using namespace std;
bool isSorted(int arr[], int n) { //check whether the list is sorted
   or not
   while (--n > 1)
      if (arr[n] < arr[n - 1])
   return false;
return true;
}
void shuffle(int arr[], int n) {
   for (int i = 0; i < n; i++)
      swap(arr[i], arr[rand() % n]);
}
void bogoSort(int arr[], int n){
   while (!isSorted(arr, n))
      shuffle(arr, n);
}
main() {
   int data[] = {54, 74, 98, 5, 98, 32, 20, 13, 35, 40};
   int n = sizeof(data)/sizeof(data[0]);
   cout << "Sorted Sequence ";
   bogoSort(data, n);
   for(int i = 0; i <n;i++){
      cout << data[i] << " ";
   }
}

출력

Sorted Sequence 5 13 20 32 35 40 54 74 98 98