![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序大作战
文章平均质量分 52
发呆少女007
这个作者很懒,什么都没留下…
展开
-
交换排序(冒泡排序—改进、快速排序)
冒泡排序【改进版本】复杂度:最好情况O(n),最坏O(n^2),改进算法对于一般情况有所提高#include#include//using namespace std;template void swap(T &a,T &b); //交换函数,注意这里屏蔽了“using namespace std”,否则提示有多个重载函数 swap 与参数列表匹配int main(){ in原创 2017-05-31 17:42:58 · 567 阅读 · 0 评论 -
排序算法总结
选择排序法的原则: 1、当数据量不大时选择 “插入排序” 或 “选择排序”,不用冒泡排序; 2、当数据量大并注重空间复杂性时,用“选择快速排序”或“堆排序”; 3、当数据量大并允许附加空间时,用“桶排序”; 4、要在已排序数据上增加若干新数据,用“插入排序”;原创 2017-06-05 09:56:51 · 283 阅读 · 0 评论 -
选择排序(直接选择、堆排序)
【如何由数组构造成“最大堆"】1、堆是完全二叉树,按照根节点、左节点、右节点的顺序从上往下可以构造成数组, 知道某个父节点编号为 n ,则左节点为 2*n ,右节点为 2*n+1 ;某个子节点为 i 时,父节点为 (i-1)/2 ;2、按数组序号排列好堆,最大堆每次调整都是从父节点、左孩子节点、右孩子节点三者中选择最大者跟父节点进行交换, (交换之后可能造成被原创 2017-06-02 17:33:23 · 382 阅读 · 0 评论 -
插入排序(直接插入、二分插入、希尔排序)
直接插入排序:1、建立一个未排序和已排序的数组,刚开始已排序数组为空,把未排序的数组中的元素一个个取出来,按顺序插到已排序数组里;2、当排序开始后,已排序的数组元素数目加1,未排序的减1,重复插入过程直到为排序数组为空。复杂度:最好的情况:已排好序,每次只要和前面的比较一次O(n)最坏的情况:1+。。。。+(n-1) ,O(n^2)原创 2017-06-01 18:29:47 · 394 阅读 · 0 评论