排序算法6——堆排序

堆排序简介 二叉堆简介 堆排序 总结堆排序简介堆排序可以看作是简单选择排序的一种的改进方法,平均复杂度为 \(O(n\log n)\),因此应用场合较多。其原理同简单选择排序相似:将数据分为已排序和未排序的两部分,并且不断的从未排序数据中选取最大(或最小)数据加入到已排序集合中。不同之处在于, 堆排序采用了一种特殊的二叉堆结构来快速的寻找最大值。(如下图,首先建立二叉堆,然后进行选择排序)二叉堆简介...
阅读(414) 评论(0)

排序算法5——简单选择排序

简单选择排序的平均复杂度为 \(O(n^2)\), 但效率通常比相同平均复杂度的直接插入排序还要差。但由于选择排序是 内部排序,因此在内存严格受限的情况下还是可以用的。选择排序的原理很简单,如下图所示:持续从未处理元素中找到最小值并加入到已排序列中。...
阅读(367) 评论(0)

排序算法4——希尔排序

希尔排序原理 希尔排序C实现 希尔排序gap选择策略希尔排序原理希尔排序是对直接插入排序算法的一种改进,二者同属于 插入排序 算法。我在上一节介绍 直接插入排序 的时候,提到过直接插入排序的几个优点,其中有 当数据已经基本有序时,效率较高。希尔排序的改进点可以看作是快速使得数据基本有序。具体如何快速使得数据基本有序呢? 很简单,对原始数据进行 有间隔的直接插入排序。 如下面的动画所示(可以在参考链接...
阅读(725) 评论(0)

排序算法3——直接插入排序

直接插入排序的平均复杂度是 \(O(n^2)\),因此应用场景较少。直接插入排序的思路是: 每次处理一个数据,将其插入到一个已经排好序的子序列中,直到数据处理完毕。下面给出一个动画示例:未完待续。。。。参考资料:(1)WIKI:https://en.wikipedia.org/wiki/Insertion_sort...
阅读(330) 评论(0)

排序算法2——快速排序

算法原理 算法实现 ——————算法原理——————快速排序算法一种最常见的排序算法,其核心思想就是 分治 ,具体的:(1) 选定一个基准数;(2) 分区,将所有大于基准数的数据分为一区,将所有小于等于基准数的数据分为一区;(3) 递归,对上述分区重复(1)(2),直到每个分区只有一个数。 ———————————————————————————下面看一个动画来快速理解该算法是怎么工作的...
阅读(354) 评论(0)

排序算法1——冒泡排序

冒泡排序是一种比较简单的排序算法,效率不高,因此实际当中用到的机会并不多。但作为快速排序算法的基础,还是有必要了解一下。顾名思义,冒泡就是指大的数字(气泡)会优先从底部升到顶端。具体实现的方式就是重复的 交换排序,通过两两比较不断地将大的数字右移。具体看下面的GIF图就很清楚了。冒泡排序在 最坏情况下的时间复杂度是O(n²),最坏的情况比如将一组降序排好的数据按升序排列。下面是一个相对效率较高的冒泡...
阅读(322) 评论(0)

排序算法0——引言

后续会讲解一系列常见的排序算法以及一些特殊要求的排序。作为引言,这里主要强调一下 :了解一个排序算法需要注意哪些方面。...
阅读(419) 评论(0)
    个人资料
    • 访问:401731次
    • 积分:4955
    • 等级:
    • 排名:第6007名
    • 原创:113篇
    • 转载:10篇
    • 译文:1篇
    • 评论:441条
    最新评论