BogoSort或置换排序的C ++程序?
Bogosort只是随机地随机整理一个集合,直到将其排序为止。BogoSort是一种无效的基于排列和组合的算法,这就是为什么它被称为排列排序的原因。BogoSort是一种非常不可靠的分类技术,也称为shot弹枪分类,愚蠢分类,猴子分类或慢速分类。该算法连续生成其输入的排列,直到找到已排序的排列。
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";
}
}