这些天复习了排序这个模块,排序算法在程序员的日常工作中是必不可少的,有时候我们不知不觉就用到了排序,这是因为高级语言系统已经比较完美的封装和优化了排序算法,并且在笔试,面试等方面我们都能见到它的身影。下面结合那本大三的教材:严版的《数据结构》,来说一说这几个经典的排序算法,如果有不对的欢迎指正 ...
插入排序 步骤: 从第一个元素开始,该元素可以认为已经被排序 取出下一个元素,在已经排序的元素序列中从后向前扫描 如果该元素 已排序 大于新元素,将该元素移到下一位置 重复步骤 ,直到找到已排序的元素小于或者等于新元素的位置 将新元素插入到该位置中 重复步骤 稳定空间复杂度O 时间复杂度O n 最差情况:反序,需要移动n n 个元素最好情况:正序,不需要移动元素 在列表已被排序时,插入排序是线性 ...
2016-08-11 13:50 0 1742 推荐指数:
这些天复习了排序这个模块,排序算法在程序员的日常工作中是必不可少的,有时候我们不知不觉就用到了排序,这是因为高级语言系统已经比较完美的封装和优化了排序算法,并且在笔试,面试等方面我们都能见到它的身影。下面结合那本大三的教材:严版的《数据结构》,来说一说这几个经典的排序算法,如果有不对的欢迎指正 ...
经典排序算法 算法复杂度 相关概念 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。 不稳定:如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 b 的后面。 时间复杂度:对排序 ...
https://www.cnblogs.com/onepixel/p/7674659.html这个文章很nice https://www.bilibili.com/video/av685670?fro ...
注:本文参考https://www.cnblogs.com/chengxiao/p/6104371.html 希尔排序原理 在讲解希尔排序之前,我们有必要先回头看一下插入排序的问题。插入排序不管数组分布时怎么样的,都是一步步的对元素进行比较,移动,插入。比如[5,4,3,2,1,0]这种 ...
选择排序的原理 选择排序的原理是首先取第一个数字作为数组中的最小者minValue(以升序排序为例),依次跟后续数字进行比较,如果发现有比minValue更小的数字,记录该数字的下标,并将该数字的值赋给minValue,直到遍历完数组的最后一个数字。然后根据记录的实际最小值的下标,跟第一个 ...
概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 我们这里说说八大排序就是内部排序。 当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序 ...
选择排序 原理:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。 插入排序 原理:每步将一个待排序 ...
与归并排序一样,快速排序使用也使用了分治的思想。下面是对一个典型的子数组A[p,...,r]进行快速排序的三步分治过程: 分解:数组A[p,...,r]被划分成两个(可能为空)子数组A[P,...,q-1]和A[q+1,...,r],使得A[p,...,q-1]中每个元素都小于等于A[q ...