猴子排序

"这篇博客介绍了猴子排序(也称为Bogo排序)算法的实现,这是一种基于随机数的排序方法。代码展示了如何使用C语言实现猴子排序,并通过读取文件"data.txt"中的数据进行排序。程序首先检查数组是否已排序,如果不排序则应用猴子排序算法,直至数组有序。最终,排序后的结果会在控制台输出。"
摘要由CSDN通过智能技术生成

采用随机数进行排序的一种算法

#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");
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值