鱼C论坛

 找回密码
 立即注册
查看: 2768|回复: 5

[已解决]写小甲鱼的那个猴子排序算法,为什么我这个代码一直得不到升序的排序结果

[复制链接]
发表于 2023-9-14 14:11:46 | 显示全部楼层
这个代码实现的是猴子排序算法,也就是每次随机交换数组中的元素,直到得到有序的数组。但是,由于随机交换的过程是随机的,因此可能需要很长时间才能得到有序的数组。所以,这个算法的时间复杂度是无法确定的,可能是O(n!),也可能是O(∞)。

在这个代码中,问题可能出在随机数生成的过程中。代码中使用了srand()函数来设置随机数的种子,但是每次调用srand()函数时使用的种子都是相同的,因此生成的随机数序列也是相同的。这就导致了每次运行程序时得到的结果都是相同的,而不是随机的。

为了解决这个问题,可以使用time()函数获取当前时间,然后将其作为srand()函数的种子,这样可以保证每次运行程序时得到的随机数序列都是不同的。修改代码如下:

  1. t2 = time(NULL);
  2. srand(t1+t2);
复制代码


另外,由于猴子排序算法的时间复杂度非常高,因此不建议在实际应用中使用。如果需要对数组进行排序,可以使用更高效的排序算法,比如快速排序、归并排序等。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-30 06:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表