用于 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"; } }
广告