用於 BogoSort 或置換排序的 C++ 程式?


博戈排序將集合隨機打亂,直到集合中的元素有序為止。博戈排序是一種基於排列組合的低效演算法,因此也被稱為置換排序。博戈排序是一種非常糟糕的排序技術,也稱為Shotgun 排序、愚蠢排序、猴子排序或慢排序。該演算法對輸入集合依次生成置換,直到找到一個有序的置換。

Input - 53421
Output - 12345

解釋

在博戈排序中,陣列將由無序元素組成,函式會先檢查陣列元素是否按順序排列,如果不是,則透過隨機交換元素來更改陣列元素的位置,然後重複該過程,直到陣列有序為止。

示例

#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";
   }
}

更新時間:2019 年 8 月 19 日

733 次瀏覽

開啟您的職業生涯

透過完成課程,獲得認證

開始
廣告
© . All rights reserved.