本文将基于C语言,依次介绍八大排序算法:冒泡排序、选择排序、插入排序、希尔排序、堆排序、快速排序、归并排序、基数排序,并对其性能作对比。 ...
分类:
编程语言 时间:
2019-10-07 17:22:03
阅读次数:
108
https://blog.csdn.net/qq_19446965/article/details/102290460 快选希堆不稳(这几种排序是不稳定的), 归选基堆不变(这几种排序的时间复杂度不变化) 元素的时间复杂度与初始序列无关的是:口诀:一堆(堆排序)海归(归并排序)选(选择排序)基友 ...
分类:
编程语言 时间:
2019-10-07 11:34:47
阅读次数:
97
因为把第三节写完了,所以必须要做个总结。 首先题目是递归与分治。 要我说其实主题就三个,递推(并由递推引进递归,毕竟递推要比递归好理解些),组合计数,分治。 一,递推。(递归) 1,什么是递推。 一串序列存在一种关系,可以通过这种关系从前项或前几项中推出后面的项。 2,怎么个应用法? 一般你需要做三 ...
分类:
其他好文 时间:
2019-10-04 17:11:56
阅读次数:
73
反思总结对我来说就是学习中的一部分,所以我要补上昨天的。 一,昨天学了些啥? 1,快速幂。。(因为那个例题的原因实践比较充足)(递归形式) 2,归并排序及对应的求逆序对的一些东西( 1 3 6 7 i 2 3 5 6 j 这个就很水了。。虽然是所谓听了一遍但是又没有实践。。)(但是上面也没有实践啊) ...
分类:
其他好文 时间:
2019-10-04 11:11:54
阅读次数:
78
利用分治的思想,实现子排序。同时将归并的思想应用于其他问题。 一、MergeSort算法 归并排序的思路便是通过递归的思想,把一个排序问题分解为多个更小的排序问题。如对于一组序列,每次将这组序列对半分开,并分别以递归的方式对数组的前半部分和后半部分进行排序。最后通过归并动作将 ...
分类:
编程语言 时间:
2019-10-03 23:36:51
阅读次数:
92
稳定性: 稳定:冒泡排序,插入排序,归并排序、桶排序、计数排序、基数排序 非稳定:选择排序、快速排序、堆排 稳定性的优势 稳定性可保证双属性条件下,按第一个属性排序后,再按照第二个属性排序,排完后属性2相等的元素,按属性1的顺序排列。 工程中 长序列: 基础类型:快排(非稳定) 自定义属性:堆排(稳 ...
分类:
编程语言 时间:
2019-10-03 21:42:17
阅读次数:
94
描述 【题解】 让区间的长度L为1,2,4,...2^(n 1) 然后对每个位置i开始的长度为L的区间归并有序,用归并排序的方法就好,然后i跳转到i+L 复杂度仍然是log2(n) n级别的,注意写的时候的一些细节。 比如一定要让最后L =n的情况进行过一次,不然无法保证整个序列是有序的 【代码】 ...
分类:
编程语言 时间:
2019-10-03 21:34:16
阅读次数:
75
小和问题: 左边比当前元素小的元素的元素的和 暴力解法不推荐O(N^2) 归并加速 ...
分类:
编程语言 时间:
2019-10-03 19:54:55
阅读次数:
97
合归并排序需要 ,先排序,再 合并。复杂度为O(nlogn);空间复杂度为O(N)。需要额外的数组,保存复制已排序的数组到原数组中。 ...
分类:
编程语言 时间:
2019-10-03 18:10:52
阅读次数:
90
归并排序法 参考文章: https://www.cnblogs.com/chengxiao/p/6194356.html https://zh.wikipedia.org/wiki/%E5%BD%92%E5%B9%B6%E6%8E%92%E5%BA%8F 基本思想: 归并排序(MERGE-SORT) ...
分类:
编程语言 时间:
2019-10-03 14:23:15
阅读次数:
90