摘要: 稳定性 如果一个排序算法能够保留数组中 重复元素的相对位置 则可以被称为是 稳定 的 稳定的排序算法:插入排序、归并排序 不稳定的排序算法:选择排序、希尔排序、快速排序和堆排序 一般只有在稳定性是必要的情况下,稳定的排序算法才有优势。 各种排序算法的性能特点 | 算法 | 是否稳定 | 是否为原地排 阅读全文
posted @ 2019-08-25 19:06 tangmeng 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 快速排序是一种分治的排序算法。 它的工作原理是将一个数组分成两部分, 通过切分实现某一部分总小于另一数组,然后分别独立排序。 切分 实现1 1. 一般策略是先随意地选取 a[lo] 作为切分元素,即那个会被排定的元素,然后我们 2. 从数组的左端开始向右扫描直到找到一个大于等于它的元素, 3. 再从 阅读全文
posted @ 2019-08-25 18:47 tangmeng 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 优先级队列的特征在于删除最大值和插入操作。 初级实现 数组实现(无序):惰性方法,仅在必要的时候找出最大元素; 数组实现(有序):积极方法:在插入时就保持列表有序,使后续操作更高效; 链表表示法 | 数据结构 | 插入元素 | 删除最大元素 | | | | | | 有序数组 | N | 1 | | 阅读全文
posted @ 2019-08-25 10:33 tangmeng 阅读(1509) 评论(0) 推荐(0) 编辑
摘要: 将两个有序的数组归并成一个更大的有序数组。 原地归并的抽象方法 该方法先将元素复制到 aux[] 中,然后再归并到 a[] 中。方法再归并时(第二个 for 循环)进行了 4 个条件判断,分别是: 左半边用尽(取右半边的元素) 右半边用尽(取左半边的元素) 右半边的当前元素小于左半边的当前元素(取右 阅读全文
posted @ 2019-08-25 10:15 tangmeng 阅读(166) 评论(0) 推荐(0) 编辑