随笔分类 -  排序算法

摘要:归并排序也有类似于快速排序的 切割 的过程,但是快速排序会选择基准值,而归并排序则直接将列表 尽可能两等分(若长度为奇数,那么有一侧会少一个元素,左侧还是右侧是无妨的)。当分割到左右两侧都只剩下一个元素的时候,分割完成,开始往上层拼接结果。拼接的大致流程是:取左右两侧队首的元素,比较两者大小,较小的 阅读全文
posted @ 2019-10-30 20:48 寂地烟火 阅读(40) 评论(0) 推荐(0) 编辑
摘要:快速排序的第一步是在列表中随机选取一个 基准值,将列表中剩余的其他数与基准值 逐一比较,小于基准值的放在基准值左侧,大于基准值的放在基准值右侧,这样就会形成如下的新列表: [小于基准值的列表] + 基准值 + [大于基准值的列表] 接下来对左侧小于基准值的列表继续执行上述过程,直至最后左侧排序完成 阅读全文
posted @ 2019-10-29 17:29 寂地烟火 阅读(71) 评论(0) 推荐(0) 编辑
摘要:插入排序 插入排序与选择排序一样,也分成:已排序列表 和 未排序列表 两部分。它也是重复执行一个步骤的过程:从右侧未排序列表取出第一个值,将它“插入”左侧已排序区域的合适位置,具体做法有不同的理解方式,比如:(方式一)先将它合并到左侧已排序列表的最右侧,然后针对已排序列表执行类似冒泡排序的过程 “从 阅读全文
posted @ 2019-10-26 17:30 寂地烟火 阅读(96) 评论(0) 推荐(0) 编辑
摘要:选择排序 选择排序也是重复执行一个动作的流程:从 待排序列表 中查找 最小 的元素,将它与 待排序列表 的 第一个元素进行 交换,交换之后第一个元素进入 已排序列表,除去 第一个元素之后的其他元素组成 下一轮的待排序列表,其初始状态如图: 第一轮运行流程及结果: 第二轮运行流程及结果: 第三轮运行流 阅读全文
posted @ 2019-10-25 20:45 寂地烟火 阅读(87) 评论(0) 推荐(0) 编辑
摘要:冒泡排序 冒泡排序就是重复执行:从最右侧开始,依次比较相邻的两个元素的大小,右侧小于左侧则交换两者的位置,看起来右侧的较小的数就好像渐渐“浮”到左边,以下为示例: 第一轮运行流程及结果(实线为交换,虚线为不交换): 第二轮运行流程及结果: 第三轮运行流程及结果: 第四轮运行流程及结果: 第五轮运行流 阅读全文
posted @ 2019-10-25 18:51 寂地烟火 阅读(15) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示