
排序
执剑仙
这个作者很懒,什么都没留下…
展开
-
算法学习(排序一)插入排序
工作几年,愈加发觉基础的重要性,后悔没能早点学习,现在重新捡起算法,数据结构等基础知识,用博客记录下原创 2017-06-23 23:39:15 · 224 阅读 · 0 评论 -
算法学习(排序二)归并排序
归并排序所采用的思想是分治法,即:分解 ->解决->合并 假设面对一个无序的数组,如{5, 19, 6, 97, 12, 53, 12, 21, 47, 10},将其分解为左右两个数组,但此时这两个数组还是无序的,因此,还需要进一步的分解,经过若干步之后,分解后如下所示 {{5}, {19}, {6}, {97}, {12}, {53}, {12}, {21}, {47}, {10}原创 2017-06-25 00:42:07 · 225 阅读 · 0 评论 -
算法学习(排序三)快速排序
快速排序和归并排序一样,都用到了递归的方法,具体做法是先选取一个数为关键数据(一般选择第一个数),将数组中小于该数的放在左侧,大于该数的放在右侧;排序完成后对左右两个部分进一步的做如上操作/** 快速排序,指定一个位置,经过排序后,是该位置的数的左边全部是小于该数,邮编全部是大于该数 @param array 需要排序的数组 @param left 左边坐标 @param right 右边坐标原创 2017-06-25 12:10:36 · 279 阅读 · 0 评论 -
算法学习(排序四)最大子数组问题
使用分治策略解决最大子数组问题 使用分治技术意味着我们要将子数组划分为两个规模相等的子数组,比如分为{low, mid}和{mid+1,high}两部分,如此,数组{low,high}的子数组所处的位置必然有三种情况:. 完全位于{low, mid}中 . 完全位于{mid+1,high}中 . 跨越中点mid 因此,在使用递归的时候,还需要在判断跨越中点的情况/** 创建一个结构体,包含左下标原创 2017-06-26 17:17:59 · 282 阅读 · 0 评论 -
算法学习(排序五)堆排序
堆排序引入了另一种算法设计技巧,使用了“堆”的数据结构来进行信息管理,堆是一个数组,可以看成一个近似的完全二叉树,如数组{1, 2, 3, 4, 5},可以看做为根节点为1,左孩子节点有2,右孩子节点为3的二叉树,4,5分别为2的左孩子和右孩子,因此我们通过计算可以求得: PARENT(i) ((i - 1) / 2) LEFT(i) (2 * i + 1) RIGHT(i)原创 2017-06-29 21:15:28 · 320 阅读 · 0 评论