摘要: 我们利用最大堆可以实现数组从小到大的原址排序,利用最小堆的可以实现对数组从大到小的原址排序。 1 二叉堆的简单介绍: 最大堆与最小堆可以当作通过数组来实现的一个完全二叉树,除了最底层之外其它层都是满的,并且最底层也是从左到右填充的。在最大堆中,父结点的值大于或等于子结点的值;在最小堆中,父结点的值小 阅读全文
posted @ 2019-05-09 22:18 殷大侠 阅读(3450) 评论(0) 推荐(0) 编辑
摘要: 归并排序是典型分治思想的代表——首先把原问题分解为两个或多个子问题,然后求解子问题的解,最后使用子问题的解来构造出原问题的解。 对于归并排序,给定一个待排序的数组,首先把该数组划分为两个子数组,然后对子数组进行排序(递归调用归并排序),最后对两个有序的子数组进行合并,使合并之后的数组为有序状态。 让 阅读全文
posted @ 2019-05-09 21:16 殷大侠 阅读(17034) 评论(0) 推荐(0) 编辑
摘要: 插入排序的思想是:给定一个待排序的数组,我们从中选择第一个元素作为有序的基态(单个元素肯定是有序的), 然后从剩余的元素中选择一个插入到有序的基态中,使插入之后的序列也是有序状态,重复此过程,直到全部有序为止。该过程很类似我们玩扑克牌进行摸牌的过程吧。 核心点: 1 插入排序可以实现原址排序,不需要 阅读全文
posted @ 2019-05-09 00:31 殷大侠 阅读(918) 评论(0) 推荐(0) 编辑
摘要: 冒泡排序 冒泡排序是我们大多数人接触到的第一种排序算法,原理简单易懂,不多解释。说明三点: 1. 冒泡排序是稳定排序,只有当两个元素不同时才会交换; 2. 冒泡排序是原址排序,不需要借助额外的空间; 3. 冒泡排序通常见到的都是通过循环来实现的,其实通过递归来实现更简洁。 4. 冒泡排序的时间复杂度 阅读全文
posted @ 2019-05-09 00:12 殷大侠 阅读(12707) 评论(0) 推荐(0) 编辑