![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序算法
文章平均质量分 58
shuzfan
这个作者很懒,什么都没留下…
展开
-
排序算法3——直接插入排序
直接插入排序的平均复杂度是 \(O(n^2)\),因此应用场景较少。直接插入排序的思路是: 每次处理一个数据,将其插入到一个已经排好序的子序列中,直到数据处理完毕。下面给出一个动画示例:未完待续。。。。参考资料:(1)WIKI:https://en.wikipedia.org/wiki/Insertion_sort原创 2017-02-07 23:50:26 · 877 阅读 · 0 评论 -
排序算法1——冒泡排序
冒泡排序是一种比较简单的排序算法,效率不高,因此实际当中用到的机会并不多。但作为快速排序算法的基础,还是有必要了解一下。顾名思义,冒泡就是指大的数字(气泡)会优先从底部升到顶端。具体实现的方式就是重复的 交换排序,通过两两比较不断地将大的数字右移。具体看下面的GIF图就很清楚了。冒泡排序在 最坏情况下的时间复杂度是O(n²),最坏的情况比如将一组降序排好的数据按升序排列。下面是一个相对效率较高的冒泡原创 2017-01-19 22:15:23 · 1558 阅读 · 0 评论 -
排序算法4——希尔排序
希尔排序原理希尔排序C实现希尔排序gap选择策略希尔排序原理希尔排序是对直接插入排序算法的一种改进,二者同属于 插入排序 算法。我在上一节介绍 直接插入排序 的时候,提到过直接插入排序的几个优点,其中有 当数据已经基本有序时,效率较高。希尔排序的改进点可以看作是快速使得数据基本有序。具体如何快速使得数据基本有序呢? 很简单,对原始数据进行 有间隔的直接插入排序。 如下面的动画所示(可以在参考链接原创 2017-02-10 11:56:23 · 3000 阅读 · 0 评论 -
排序算法0——引言
后续会讲解一系列常见的排序算法以及一些特殊要求的排序。作为引言,这里主要强调一下 :了解一个排序算法需要注意哪些方面。原创 2017-01-18 23:48:18 · 982 阅读 · 0 评论 -
排序算法5——简单选择排序
简单选择排序的平均复杂度为 \(O(n^2)\), 但效率通常比相同平均复杂度的直接插入排序还要差。但由于选择排序是 内部排序,因此在内存严格受限的情况下还是可以用的。选择排序的原理很简单,如下图所示:持续从未处理元素中找到最小值并加入到已排序列中。原创 2017-02-12 23:52:17 · 940 阅读 · 0 评论 -
排序算法2——快速排序
算法原理 算法实现 ——————算法原理——————快速排序算法一种最常见的排序算法,其核心思想就是 分治 ,具体的:(1) 选定一个基准数;(2) 分区,将所有大于基准数的数据分为一区,将所有小于等于基准数的数据分为一区;(3) 递归,对上述分区重复(1)(2),直到每个分区只有一个数。 ———————————————————————————下面看一个动画来快速理解该算法是怎么工作的原创 2017-01-19 23:05:15 · 2672 阅读 · 0 评论 -
排序算法6——堆排序
堆排序简介二叉堆简介堆排序总结堆排序简介堆排序可以看作是简单选择排序的一种的改进方法,平均复杂度为 \(O(n\log n)\),因此应用场合较多。其原理同简单选择排序相似:将数据分为已排序和未排序的两部分,并且不断的从未排序数据中选取最大(或最小)数据加入到已排序集合中。不同之处在于, 堆排序采用了一种特殊的二叉堆结构来快速的寻找最大值。(如下图,首先建立二叉堆,然后进行选择排序)二叉堆简介原创 2017-02-18 22:48:41 · 1350 阅读 · 0 评论