日常记录blog

双调序列:
例如: 1 , 2 , 5 , 8 , 7 , 6 , 4 , 3 1,2,5,8, 7, 6, 4, 3 1,2,5,8,7,6,4,3(先增后减或先减后增或全增/全减)

Batcher比较器

Batcher 定理

通过该定理,一个长度为 n n n的双调序列可以变成两个 n 2 \frac{n}{2} 2n​的双调序列。
每次取出序列第 i i i个和 i + n 2 i + \frac{n}{2} i+2n​,进行比较,其中小的放入 M i n Min Min,大的放入 M a x Max Max获得的新 M i n Min Min按顺序仍为一个双调序列,而 M a x Max Max也同理。
如此递归下去,双调序列会变成长度为1的,此时最终输出的结果即为有序序列(也就是后面要引出的双调归并网络)

双调归并网络

双调排序网络

双调归并网络要求输入数据为一个双调序列,如果输入数据不为一个双调序列呢?
因此需要在归并网络前增加一些预处理,使得输入数据变为一个双调序列。

首先,一个长度为 n n n的序列,将其等分为长度 2 2 2的一些子序列,很容易得到这些长度为2的子序列是有序的,一共为 n 2 \frac{n}{2} 2n​个,接着便可以将其变成长度为4的双调序列,一共为 n 4 \frac{n}{4} 4n​,类似递归下去可以得到长度为8的双调序列,一共为 n 8 \frac{n}{8} 8n​个,直到得到长度为 n n n的双调序列。

(两个有序的序列 → \rightarrow → 双调序列 (一段升序,一段降序))

得到双调序列之后就丢进双调归并网络就可以了,两者结合起来即为双调排序网络。


如果元素数量不为 2 x 2^x 2x,需要 p a d d i n g padding padding,也就是把元素填充到 2 x 2^x 2x个

什么是双调排序?(双调归并/双调排序整理)相关推荐

  1. 【排序】归并类排序—归并排序(逆序数问题)

    文章目录 前言 归并排序(merge sort) 逆序数 结语 微信公众号:bigsai 数据结构与算法专栏 前言 在排序中,我们可能大部分更熟悉冒泡排序.快排之类.对归并排序可能比较陌生.然而事实上 ...

  2. 几种常用排序(归并,希尔,快排,堆排.......)

    冒泡排序: 最简单的一种排序,重复的遍历数列,每次比较两个元素,按一定的顺序排列: for(int i=0;i<ength;i++)//length是数组的长度 {for(int j=0;j&l ...

  3. 数据结构(八):排序 | 插入排序 | 希尔排序 | 冒泡排序 | 快速排序 | 简单选择排序 | 堆排序 | 归并排序 | 基数排序 | 外部排序 | 败者树 | 置换-选择排序 | 最佳归并树

    文章目录 第八章 排序 一.排序的基本概念 (一)什么是排序 (二)排序的应用 (三)排序算法的评价指标 (四)排序算法的分类 (五)总结 二.插入排序 (一)算法思想 (二)算法实现 (三)算法效率 ...

  4. 胜者树与败者树, 多路平衡归并外部排序

    胜者树与败者树   胜者树和败者树都是完全二叉树,是树形选择排序的一种变型.每个叶子结点相当于一个选手,每个中间结点相当于一场比赛,每一层相当于一轮比赛. 不同的是,胜者树的中间结点记录的是胜者的标号 ...

  5. 算法整理:外排序篇-置换选择排序最佳归并树

    目录 置换-选择排序 最佳归并树 外部排序分为几个步骤,首先根据内存将待排序文件分段,然后按照分段依次将每个分段的数据读入内存排序,最后将排序后的分段通过归并算法组合在一起.在排序的过程算法对外存的读 ...

  6. 数据结构(七)高级排序算法——归并、快速排序

    一.归并排序 1.排序原理 归并排序算法是一种利用了分治算法思想实现的排序算法,这种排序算法是基于有序数组合并的归并排序算法的基本思想就是:判断一个待排序序列的长度,只要这个待排序序列的长度是超过1的 ...

  7. java排序算法总结_排序算法总结及Java实现

    1. 整体介绍 分类 排序大的分类可以分为两种,内排序和外排序.在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序.主要需要理解的都是内排序算法: 内排序可以分为 ...

  8. java常见的排序算法_常见排序算法及Java实现

    先上个总图↓: ①.直接插入排序 插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法.它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并 ...

  9. 牛客网Java刷题知识点之插入排序(直接插入排序和希尔排序)、选择排序(直接选择排序和堆排序)、冒泡排序、快速排序、归并排序和基数排序(博主推荐)...

    不多说,直接上干货! 插入排序包括直接插入排序.希尔排序. 1.直接插入排序: 如何写成代码: 首先设定插入次数,即循环次数,for(int i=1;i<length;i++),1个数的那次不用 ...

  10. 用python排序算法_Python - 八大排序算法

    1.序言 本文使用Python实现了一些常用的排序方法.文章结构如下: 1.直接插入排序 2.希尔排序 3.冒泡排序 4.快速排序 5.简单选择排序 6.堆排序 7.归并排序 8.基数排序 上述所有的 ...

最新文章

  1. PHP 函数 ignore_user_abort定时执行任务的实现
  2. flutter开发中常用的dart插件
  3. flume采集最简demo
  4. 0x123C语言,and esp, 0xfffffff0
  5. 的ui在vs中显示没有成员_在电脑桌面使用敬业签团队便签怎么设置新增内容在上面显示?...
  6. PHP 动态设置数组索引的值
  7. 李扬:2018春节港澳游(上篇:行)
  8. 杰控组态自定义串口通讯的经验
  9. 大型体育场馆应急照明设计
  10. php存储富文本编辑器内容到数据库
  11. 论文笔记 Triformer: Triangular, Variable-Specific Attentions for Long SequenceMultivariate Time Series
  12. 团队管理(一)-会议纪要的高效记录和执行
  13. 离线强化学习(Offline RL)系列1:离线强化学习原理入门
  14. gds是什么系统简称_气体检测仪GDS系统是什么系统?
  15. jQuery幻灯片插件Skippr
  16. 联想y7000p麦克风插上耳机声音太小的问题
  17. thinkbook15快捷键
  18. OFDM 和 OFDMA
  19. 计算机文秘所学的专业知识,18文秘02李荧 随着现代科学技术的发展,计算机已经...
  20. 对面积的曲面积分中dS与dxdy的转换

热门文章

  1. 网路游侠:也说“IT和互联网创业”
  2. 2018,还剩下一个月了。
  3. 微软发布IE11预览版 主打速度比IE10快9%
  4. 穷人的新年红包系统,单节点 12W TPS
  5. sftp之概述、搭建、命令
  6. 自学python看什么书-如何系统地自学 Python?
  7. Android 蓝牙基础篇之 —— A2DP
  8. 【Python习题】面向对象的人机猜拳小游戏
  9. “好人综合症”是一种心理疾病
  10. IE落幕,微软IE浏览器永久关闭