
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int in_order(int array[], int length);
void bogo_sort(int array[], int length);
void shuffle(int array[], int length);
void bogo_sort(int array[], int length)
{
while (!in_order(array, length)){
shuffle(array, length);
}
}
int in_order(int array[], int length) // 检查数组是否有序
{
int i = 0;
while (array[i] <= array[i+1] && ++i < length - 1) // 判断相邻两个元素的有序性
;
if (i == length - 1){ // 判断索引
return 1;
} else {
return 0;
}
}
void shuffle(int array[], int length) //随机对数组进行排序
{
int i, temp, index;
static int t1, t2;
srand(t1);
t1 = rand();
t2 = time(NULL);
srand(t1+t2); // 增加随机性
for (i = 0; i < length; i++){
index = rand() % (length - i) + i;
if (index != i){
temp = array[i];
array[i] = array[index];
array[index] = temp;
}
}
printf("排序后的结果是:");
for (i = 0; i < length; i++)
{
printf("%d ", array[i]);
}
putchar('\n');
}