Bogo排序,(相信运气吗?)
程序代码:#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void bogo_sort(int *, int, int);
void shuffle(int *, int);
int in_order(int *, int);
int main(void) {
int array[5], i;
for(i = 0; i < 5; i++)
scanf("%d", array + i);
bogo_sort(array, 0, 4);
for(i = 0; i < 5; i++)
printf("%d ", array[i]);
return 0;
}
void bogo_sort(int * data, int begin, int end) {
while(!in_order(data, end - begin)) {
shuffle(data, end - begin);
}
}
void shuffle(int * data, int size) {
int i, temp;
srand((unsigned)time(NULL));
for(i = 0; i <= size; i++) {
int index = rand() % (size + 1);
temp = data[i];
data[i] = data[index];
data[index] = temp;
}
}
int in_order(int * data, int size) {
int i;
for(i = 0; i < size; i++)
if(data[i] > data[i + 1])
return 0;
return 1;
}
这种排序的算法就是,有一只猴子把n个卡片扔向天空,掉下如果排列恰好,则说明排序成功,呵呵。我试了试,运气还不错,1秒左右就好了,大家也可以去试试,如果长时间还没好,就说明你人品差啦,去烧点香。呵呵
[ 本帖最后由 lz1091914999 于 2011-7-4 20:00 编辑 ]










