
排序算法
haojiefenglang
让自己变得更好
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
排序算法——快速排序算法实现及改进策略
1、 时间复杂度: 最好情况:o(n); 平均情况:o(nlogn) 最坏情况:o(n^2) 2、算法步骤: (1)从数列中选取一个元素作为基准值; (2)小于基准值的往前面排;大于基准值的往后面排; (3)递归对步骤二的两个子数列再次进行排序; (4)终止条件:子数列的长度是1时结束。 3、优化策略(主要从基准值的选择、减...原创 2018-08-05 13:20:54 · 3899 阅读 · 0 评论 -
排序算法——冒泡排序算法的实现
1、时间复杂度 最优情况时间复杂度:o(n); 最差/平均时间复杂度:o(n^2); 2、算法特点 大量的比较,大量的不必要的交换操作,导致处理速度较慢; 3、算法步骤 (1)相邻两个元素进行比较,不满足正序(升序),交换两个元素,直到最后一对元素,此时序列尾元素对应着最大值; (2)除最后一个元素外,将其他元素重复上述步骤(1); (3)终止条件:重复上述次数达到n次时。 4、...原创 2018-08-06 15:15:14 · 473 阅读 · 0 评论 -
排序算法——直接插入排序算法的实现与改进
1、最优时间复杂度:o(n); 最差情况时间复杂度:o(n^2) ; 稳定排序算法; 2、算法核心: (1)准确找到插入位置; (2)将该位置之后的元素全部后移一位; 所以时间消耗在大量的数据移动上。 3、算法步骤: (1)将第一个元素看作一个有序序列,而将第2个元素到最后一个元素看作未排序序列; (2)从头到尾扫描未排序序列,将扫描到每个元素插入到合适的位置,直至排序结束。 ...原创 2018-08-06 14:38:40 · 1562 阅读 · 0 评论 -
排序算法——选择排序算法实现
1、时间复杂度:o(n^2) 2、选择排序主要操作是交换和比较; 交换次数在0~(n-1); 总比较次数:N=(n-1)+(n-2)+(n-3)+…..+1=n(n-1)/2; 因为交换需要的CPU时间>比较需要的CPU时间; 当n比较少时,选择比冒泡快,减少了不必要的交换,每次交换仅仅是最大值或者最小值与序列起始位置进行狡猾。 3、算法步骤: (1)在待排序序列中找到最大/最...原创 2018-08-06 13:53:09 · 296 阅读 · 0 评论 -
排序算法——常考知识点
一、 单项选择题(共71题) 1、对n个元素的序列进行冒泡排序时,最少的比较次数是( )。 A. n B. n-1 C. n/2 D. log2n 答案:B 2、若一个元素序列基本有序,则选用( )方法较快。 A. 直接插入排序 B. 简单选择排序 C. 堆排序 D. 快速排序 答案:A 3、在对n个元素进行冒泡排序的过程中,第一趟排序至多需要进行( )对相邻元素之间的交换。 A....转载 2018-08-06 13:42:32 · 6814 阅读 · 0 评论 -
排序算法——归并排序算法的实现
1、时间复杂度: 最优情况:o(n); 最坏情况:o(nlogn) 将待排序的序列分成若干子序列,并且每个子序列是有序的,再将每个子序列两两进行排序,合并,最终整体有序。 2、算法步骤: (1)先将序列拆分成两个子序列; (2)将两个子序列之间进行排序,合成一个; (3)重复(1)(2)过程,进行递归,直至每个序列个数为1时,终止递归。 3、改进思想 (1)对于小数组(长度小于一...原创 2018-08-05 18:21:26 · 315 阅读 · 0 评论 -
排序算法——桶排序算法
以牺牲空间复杂度换取时间复杂度的排序方式,不是比较排序类。 1、假设有n个元素,m个桶; 时间复杂度为 o(n+m*n/m*log(n/m))=o(n+nlogn-nlogm) 空间复杂度:o(n+m); 当m越大的时,趋近于n时,时间复杂度达到最优为:o(n);此时空间复杂度达到最大; 2、算法思想(假设每个桶的容量是相同的) (1)设置桶的容量大小为n/m; (2)每个桶是有序的...原创 2018-08-05 17:41:24 · 345 阅读 · 0 评论 -
排序算法——计算排序算法的实现
1、时间复杂度:o(n); 空间复杂度:o(n+k); 牺牲空间复杂度换取时间复杂度的降低; 2、算法思想: 计数排序局限性比较大,算法思想:假定输入是有一个小范围内的整数构成的(比如年龄等),利用额外的数组去记录元素应该排列的位置,思想比较简单。 计数排序是典型的不是基于比较的排序算法,基于比较的排序算法最少也要O(nlogn),有没有可能创造线性时间的排序算法呢?那...转载 2018-08-05 16:54:39 · 1241 阅读 · 0 评论 -
排序算法——堆排序算法的实现
堆排序的关键在于顶堆的构建和调整,顶堆是一种特殊的完全二叉树; 大顶堆:根结点的值大于等于所有孩子结点; 小顶堆:根结点的值最小; 1、时间复杂度:o(nlogn) 2、算法思想:(以大顶堆为例) (1)将给定的数组构建成一个大顶堆; (2)将首尾元素交换,将堆顶元素放在数组的最后位置; (3)长度减1,将剩下的元素构建堆; (4)终止条件:堆的尺寸缩减为1时停止。 3、堆排序实...原创 2018-08-05 16:27:01 · 329 阅读 · 0 评论 -
排序算法——希尔排序算法的实现与改进
希尔排序是直接插入排序算法的改进版 1、时间复杂度 最好情况:o(nlogn) 最坏情况:o(n^2) 2、算法思想: (1)待排序序列分成多个子序列; (2)每个子序列进行直接插入排序; 具体步骤: a) 选择一个递减步长序列:s1>s2>s3…….>sk,sk=1; b) 按照步长k,对序列进行k次排序; c) 每次排序,根据步长,将整体序...原创 2018-08-05 14:35:04 · 978 阅读 · 0 评论 -
排序算法总结
排序算法关注的几个点 1、是否是问答排序算法? (1)稳定排序算法指:排序时,相同元素不进行交换,保持原有序列的相对位置。 优点: (1)减少不必要的交换; (2)当排序算法稳定时,排序结果可以为后续排序使用; 举例: 一个班学生已经按照学号大小排好序,此时要求按照数学成绩大小再进行排序,如果成绩相同,必须按照学号从小到大的顺序排列。 若采用稳定的排序算法对数学成绩进行排序,则成绩...原创 2018-08-06 15:47:39 · 183 阅读 · 0 评论