![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构和算法
qq小小布丁
内向
展开
-
插入排序
一个新的数据插入,会插入到前面排好的序列中。8 2 4 9 3 6 首先我们考虑数字2,假设后面的数字不存在(手中只有一张8,又抓来了2),那么显然2应该放在8的前面。2 8 4 9 3 6 又抓来了一张4,现在大家都知道应该怎么办了吧?2 4 8 9 3 6 又来了个9,没错,正好不用换顺序2 4 8 9 3 6 同样的道理,考虑3该放的位置,显然放在原创 2016-10-30 20:51:17 · 190 阅读 · 0 评论 -
快速排序
快速排序采用的思想是分治思想。快速排序是找出一个元素(理论上可以随便找一个)作为基准(pivot),然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基准右边的元素值 都不小于基准值,如此作为基准的元素调整到排序后的正确位置。递归快速排序,将其他n-1个元素也调整到排序后的正确位置。最后每个元素都是在排序后的正 确位置,排序完成。所以快速排序算法的核心算法是分区操作,即如何调整基准原创 2016-10-30 21:08:24 · 179 阅读 · 0 评论 -
选择排序
参考:http://www.cnblogs.com/luchen927/archive/2012/02/27/2367108.html还是先来看看选择排序的思想。选择排序的思想非常直接,不是要排序么?那好,我就从所有序列中先找到最小的,然后放到第一个位置。之后再看剩余元素中最小的,放到第二个位置……以此类推,就可以完成整个的排序工作了。可以很清楚的发现,选择排序是固定位置,找元素。相比于插原创 2016-10-30 21:28:22 · 182 阅读 · 0 评论 -
冒泡排序
参考:http://www.cnblogs.com/luchen927/archive/2012/02/28/2367708.html思想同之前介绍的两种排序方式一样,冒泡排序也是最简单最基本的排序方法之一。冒泡排序的思想很简单,就是以此比较相邻的元素大小,将小的前移,大的后移,就像水中的气泡一样,最小的元素经过几次移动,会最终浮到水面上。举例分析说明一下,如下数据:原创 2016-10-30 21:32:39 · 169 阅读 · 0 评论 -
堆排序
参考:http://www.cnblogs.com/luchen927/archive/2012/03/08/2381446.html思想堆排序,顾名思义,就是基于堆。因此先来介绍一下堆的概念。堆分为最大堆和最小堆,其实就是完全二叉树。最大堆要求节点的元素都要大于其孩子,最小堆要求节点元素都小于其左右孩子,两者对左右孩子的大小关系不做任何要求,其实很好理解。有了上面的定义,我们可以原创 2016-10-30 21:44:57 · 247 阅读 · 0 评论 -
归并排序
归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。首先考虑下如何将将二个有序数列合并。这个非常简单,只要从比较二个数列的第一个数,谁小就先取谁,取了后就在对应数列中删除这个数。然后再进行比较,如果有数列为空,那直接将另一个数列的数据依次取出即可。[cpp] view plain copy原创 2016-10-30 21:51:35 · 162 阅读 · 0 评论 -
希尔排序
参考:http://blog.csdn.net/morewindows/article/details/6668714希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。 该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(原创 2016-10-30 21:53:50 · 192 阅读 · 0 评论