首页 > 其他分享 >俩猴排序

俩猴排序

时间:2023-02-05 12:55:25浏览次数:32  
标签:std rand arr 随机性 swap 排序

众所周知,猴子排序的原理是打乱序列,然后判断是否有序。可以看到,猴子排序的时间复杂度为 \(\Omega(n),O(?)\)。

通常打乱序列的方式为:

for (int i = 0; i < n; ++i) {
	swap (arr[i], arr[rand () % n]);
}

(当然 C++11 的 std::shuffle() 函数实现更复杂点)


俩猴排序则是将 swap (arr[i], arr[rand () % n]);,改成了 swap (arr[rand () % n], arr[rand () % n]);,随机性更强。严格区分欧皇非酋。

当然如果想要更好的随机性可以改成 std::mt19937 类。

标签:std,rand,arr,随机性,swap,排序
From: https://www.cnblogs.com/FiveUnderlines/p/two-monkeys-sort.html

相关文章

  • 排序
    排序1.冒泡排序1.对于一个数组,比较所有的相邻的元素,如果第一个大于第二个,则交换2.比较一轮下来,可以保证一个元素是有序的3.在比较n-1轮,整个数组就排序好了代码......
  • 【八大数据排序法】快速排序法的图形理解和案例实现 | C++
    第十八章快速排序法:::hljs-center目录第十八章快速排序法●前言●认识排序●一、快速排序法是什么?1.简要介绍2.具体情况3.算法分析●二、案例实现1.......
  • 八种常用的排序算法
    八种常用的排序算法对各种常用的排序算法的代码实现、时间复杂度、空间复杂度、稳定性做简要分析。Author:MsuenbDate:2023-01-31概述排序也称排序算法(SortAlgo......
  • 排序(Power Query)
    数据源(左单列、右多列)://单列排序let源=Excel.CurrentWorkbook(){[Name="表1"]}[Content],排序的行=Table.Sort(源,{"成绩",1})in排序的行//单列......
  • Qt中QSqlQueryModel对应的表格进行自动排序功能
    Qt中使用了自己的机制来避免使用SQL语句,为我们提供了更简单的数据库操作及数据显示模型,分别是只读的QSqlQueryModel,操作单表的QSqlTableModel和以及可以支持外键的QSqlRela......
  • 【算法】二分法 ② ( 排序数组中查找目标值 | 二分法的经典写法 | 在排序数组中查找元
    文章目录​​一、排序数组中查找目标值(二分法的经典写法)​​​​二、在排序数组中查找元素的最后一个位置(二分法的通用模板)​​一、排序数组中查找目标值(二分......
  • 冒泡排序——C语言描述
    冒泡排序——C语言描述目录冒泡排序——C语言描述0测试用例框架1定义2代码4测试用例0测试用例框架https://blog.csdn.net/m0_59469991/article/details/127137119?......
  • js中数组对象排序
    //数组对象按照指定属性排序--冒泡写法constduplicateRemovalBubbling=function(oldArr,key){for(leti=0;i<oldArr.length;i++){for(letj=0;j<oldArr.length......
  • 768.max-chunks-to-make-sorted-ii 最多能完成排序的块II
    问题描述768.最多能完成排序的块II解题思路可以划分成满足条件的块的充分必要条件是,块内所有元素都小于等于右侧数组中未划分的任一元素。本题中使用了map来进行处理,实......
  • 【八大数据排序法】希尔排序法的图形理解和案例实现 | C++
    第十七章希尔排序法:::hljs-center目录第十七章希尔排序法●前言●认识排序●一、希尔排序法是什么?1.简要介绍2.图形理解3.算法分析●二、案例实现1.......