2018年4月28日

快速排序的几个变化形式

摘要: 快速排序最简单的区间切分形式已经在前面的博文中介绍过了,是单向处理的,下面介绍快速排序的另几种形式,都是双向处理,即处理模式是,比Pivot小的往左移,比Pivot大的往右移,当两个方向相交后,把Pivot移动到相交位置往后的一个位置,最后形成三段,分别为比Pivot大,等于Pivot,大于Pivo 阅读全文

posted @ 2018-04-28 00:55 凄夜 阅读(404) 评论(0) 推荐(0) 编辑

2018年4月7日

归并排序

摘要: 先介绍下分治法,分治法就是将原问题分解为几个规模较小但在形式上跟原问题一样的子问题,递归地求解这些子问题,然后再合并这些子问题的解,来建立原问题的解。归并排序就是典型的遵循分治法思想的算法,归并排序的每一步,都将原问题分解为左右两部分,处理完这两部分后,将此两部分合并,再往上递归,最后就是整个问题的 阅读全文

posted @ 2018-04-07 21:53 凄夜 阅读(198) 评论(0) 推荐(0) 编辑

插入排序与循环不变式

摘要: 插入排序的做法是在循环遍历整个待排序序列时,每遍历一个元素,就会将此元素插入到一个已排好序的列表中,待整个序列遍历完毕,则已排好序的列表就是排序的结果,另外已排好序的列表并不需要额外的存储空间,也就是可以进行原址排序。 具体做法如下: 有一序列长度为8 4 6 1 3 9 5 8 2 从第一个元素i 阅读全文

posted @ 2018-04-07 12:52 凄夜 阅读(260) 评论(0) 推荐(0) 编辑

快速排序

摘要: 快速排序也是分治算法,先选择一个元素Pivot作为主元,将此主元放到数组的最右边,然后从最左边开始扫描,当扫描到一个元素比Pivot小,则将此元素往左边置换。一次扫描过后,会把整个数组分成两个部分,比Pivot大的元素在右边,比Pivot小的元素在左边。然后递归这个过程 考虑以下数组: 13 6 1 阅读全文

posted @ 2018-04-07 11:38 凄夜 阅读(172) 评论(0) 推荐(0) 编辑

导航