采用随机数进行排序的一种算法
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
//判断是否按顺序排列
bool is_sorted(int *a, int n)
{
while ( --n >= 1 ) {
if ( a[n] < a[n-1] ) return false;
}
return true;
}
//猴子排序算法
void shuffle(int *a, int n)
{
int i, t, r;
for(i=0; i < n; i++) {
t = a[i];
r = rand() % n;
a[i] = a[r];
a[r] = t;
}
}
void bogosort(int *a, int n)
{
while ( !is_sorted(a, n) ) shuffle(a, n);
}
int main()
{
//文件读写
int a[6];
FILE* fpread;
fpread = fopen("data.txt", "r");
if (fpread == NULL)
{
printf("file is error.");
return -1;
}
for (int j = 0; j < 6; j++)
{
fscanf(fpread, "%d", &a[j]);
}
fclose(fpread);
int i;
bogosort(a, 6);
for (i=0; i < 6; i++) printf("%d ", a[i]);
printf("\n");
}