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 编辑 ]