| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 遗忘比较、排序网络、非常见排序 -> 正文阅读 |
|
[数据结构与算法]遗忘比较、排序网络、非常见排序 |
作者:recommend-item-box type_blog clearfix |
一,遗忘比较交换算法出自算法导论: 遗忘比较交换算法是指算法只按照事先定义好的操作执行,即需要比较的位置下标必须事先确定好。 虽然算法可能依靠待排序元素的个数,但它不能依靠待排序元素的值,也不能依赖任何之前的比较交换操作的结果。 在排序算法一文中有提到,插入排序、选择排序、冒泡排序、归并排序、堆排序、快速排序、希尔排序都是基于比较的排序,而这里面,冒泡排序是遗忘比较,希尔排序是嵌套了其他排序算法的,如果嵌套了遗忘比较算法,那么整个希尔排序也是遗忘比较算法,另外几个都不是遗忘比较算法。 二,0-1排序引理0-1排序引理:如果一个遗忘比较交换算法能够对所有只包含0和1的输入序列排序,那么它也可以对包含任意值的输入序列排序。 三,列排序即使不知道奇数步中,对每一列的排序采取的是什么排序算法,我们仍然可以认为,列排序算法是遗忘比较交换算法。 书中后面有提示,如何根据0-1排序引理证明上述八步操作可以完成排序,不难,略。 以s=5为例,我们把数组的长度补到50的倍数x(x>=250),那么r=x/5,r>=50,即满足条件,排序完成之后再把多余的元素删掉即可。 代码:
其中的sort2是调用别的排序算法,比如插入排序。 四,比较网络来自?OI之外的一些东西:简单谈谈排序网络 | Matrix67: The Aha Moments 1,比较算子对于一个数列{ai},任取2个数ai和aj,比较大小并(可能)交换位置,使得ai<=aj成立,这样的一个操作叫比较算子。 PS:可以理解为这是递增比较算子,对应的还有一个递减比较算子。 2,比较网络一系列有序的比较算子,构成一个比较网络。 例如下面是4个比较算子构成的网络: 3,比较网络的可并行性以上面的网络为例,中间的2个比较算子,如果改变先后顺序,或者说同时操作,显然整个网络的结果是一样的。 五,排序网络1,排序网络如果一个比较网络对于任何输入数列,输出的都是有序数列,那么称这个比较网络为排序网络。 上面的比较网络不是排序网络,如输入3 1 4 2输出的是1 3 2 4,不是有序的。 2,排序网络的判定排序网络和遗忘比较交换算法是对应的。 所以判定一个比较网络是不是排序网络,可以用0-1排序引理。 即如果一个比较网络能够对所有只包含0和1的输入序列排序,那么它就是排序网络。 3,冒泡排序的排序网络?可以调整为: ?这样,就可以提高并行程度,加快速度。 4,希尔排序(内嵌冒泡)的排序网络? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 12:35:30- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |