数据结构 ,排序算法
飞翔的黄瓜
这个作者很懒,什么都没留下…
展开
-
排序算法总结之归并排序
//递归方法/* L = 左边起始位置, R = 右边起始位置, RightEnd = 右边终点位置*/ void Merge( ElementType A[], ElementType TmpA[], int L, int R, int RightEnd ) { /* 将有序的A[L]~A[R-1]和A[R]~A[RightEnd]归并成一个有序序列 */ int LeftEnd, N原创 2017-08-08 18:05:15 · 196 阅读 · 0 评论 -
排序算法总结之直接选择排序
堆排序就是选择排序的一种,不过我们这里 写的直接选择排序就非常简单了,它和直接插入排序很像,都将数据分为有序区和无序区,所不同的是直接播放排序是将无序区的第一个元素直接插入到有序区以形成一个更大的有序区,而直接选择排序是从无序区选一个最小的元素直接放到有序区的最后。(和冒泡也很像,只不过是一个个的换,而这个是找到最小的再换) 这里参考的是这位大神的博客http://blog.csdn.net/m转载 2017-08-02 17:03:11 · 177 阅读 · 0 评论 -
排序算法总结之堆排序
堆排序算是选择排序,即按照最小堆的方式,一个一个弹出来,不过这样子需要额外的数组来存放弹出来的数据。浙江大学陈越老师的方法,不需要额外的数组,如下 利用数组的方式建立一个最大堆 它的工作方式是:每次把最大堆的根节点和下标最大的结点(不一定是数值最小)交换,这样下标最大的结点即为最大值,如图所示,a和b交换,a在根节点而b交换到了堆伟。然后把堆的规模减1,如图即把下边为3的结点断了与这个原创 2017-08-03 11:27:51 · 212 阅读 · 0 评论 -
排序算法总结之希尔排序
希尔排序是按照不同步长对元素进行插入排序,实质就是把一组元素分为很多小组各自进行排序。 该方法的基本思想是:先将整个待排元素序列分割成若干个子序列,分别进行直接插入排序,然后元素的分隔逐渐减少,当增量足够小(即为1时),再对全体元素进行一次插入排序,因为直接插入排序在元素基本有序的情况下(接近最好情况),效率是很高的,因此希尔排序时间效率比较高。 这里用下别人的图 以n=10的一原创 2017-08-01 23:03:27 · 265 阅读 · 0 评论 -
快速排序
借用一下别人的图 排序算法显神威 方法其实很简单:分别从初始序列“6 1 2 7 9 3 4 5 10 8”两端开始“探测”。先从右往左找一个小于6的数,再从左往右找一个大于6的数,然后交换他们。这里可以用两个变量i和j,分别指向序列最左边和最右边。我们为这两个变量起个好听的名字“哨兵i”和“哨兵j”。刚开始的时候让哨兵i指向序列的最左边(即i=1),指向数字6。让哨原创 2017-07-01 16:41:47 · 162 阅读 · 0 评论