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

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

<시간/>

Bogosort는 정렬될 때까지 컬렉션을 무작위로 섞습니다. BogoSort는 순열 및 조합 기반의 비효율적인 알고리즘이므로 순열 정렬이라고 합니다. BogoSort는 샷건 정렬, 바보 정렬, 원숭이 정렬 또는 느린 정렬이라고도 하는 매우 플롭 정렬 기술입니다. . 알고리즘은 정렬된 것을 찾을 때까지 입력의 순열을 연속적으로 생성합니다.

Input - 53421
Output - 12345

설명

bogosort에서 배열은 배열 요소가 순서대로 있는지 확인하는 정렬되지 않은 요소로 구성되며 그렇지 않은 경우 요소를 무작위로 교환하여 배열 요소의 위치를 ​​변경하고 배열이 정렬될 때까지 프로세스를 반복합니다.

예시

#include <iostream>
#include <stdlib.h>
using namespace std;
int is_sorted(int *arr, int n) {
   while ( --n >= 1 ) {
      if ( arr[n] < arr[n-1] ) {
         return 0;
      }
   }
   return 1;
}
void shuffle(int *arr, int n) {
   int temp, r;
   for(int i=0; i < n; i++) {
      temp = arr[i];
      r = rand() % n;
      arr[i] = arr[r];
      arr[r] = temp;
   }
}
void bogosort(int *arr, int n) {
   while ( !is_sorted(arr, n) ) {
      shuffle(arr, n);
   }
}
int main() {
   int arr[] = { 5, 3, 4, 2, 1 };
   int i;
   bogosort(arr, 5);
   for (i=0; i < 5; i++) {
      cout<< arr[i]<<"\t";
   }
}