桶排序假设输入数据服从均匀分布,平均情况下它的时间复杂度为O(n)。 桶排序将输入数据的区间均匀分成若干份,每一份称作“桶”。分别对每一个桶的内容进行排序,再按桶的顺序输出则完成排序。 通常使用链表来实现桶。 代码如下:(仅供参考) void Insert(vector<double> & bkt, ...
分类:
编程语言 时间:
2020-01-14 20:41:57
阅读次数:
115
插入排序是最常用的排序之一。 在输入规模较小的时候,插入排序的性能较好。 最好情况下插入排序的时间复杂度是O(n),平均情况则为O(n2)。 插入排序是稳定的排序算法之一。 基本思路为从第二个元素开始,依次插入前面已经排好序的序列,利用循环不变式很容易理解。 代码如下: 1 void Inserti ...
分类:
编程语言 时间:
2020-01-14 19:00:43
阅读次数:
91
复杂度分析(下) 继续上篇,这篇将介绍四个复杂度分析方面的知识点:最好情况时间复杂度、最坏情况时间复杂度、平均情况时间复杂度、均摊时间复杂度。 1.最好、最坏情况时间复杂度 我们以数组查找举例,遍历数组找指定元素,找到则立即返回该元素所在数组的下标位置,没找到则返回-1。代码比较简单我就不写出来了。 ...
分类:
其他好文 时间:
2020-01-01 19:06:56
阅读次数:
85
一、冒泡排序: 冒泡排序最好的情况是一趟就排完 时间复杂度为O(n); 最坏的情况就是刚好是反序的 需要循环(n-1)趟 每趟需要循环(n-1-i)次 时间复杂度为 ((n-1)*n)/2 也就是O(n^2) 所以冒泡排序的平均时间复杂度为O(n^2); 二、选择排序: 选择排序最好、最差、平均时间 ...
分类:
编程语言 时间:
2019-12-20 18:42:30
阅读次数:
233
排序算法 1、基本介绍 ? 排序算法比较基础,但是设计到很多计算机科学的想法,如下: ? 1、比较和非比较的策略 ? 2、迭代和递归的实现 ? 3、分而治之思想 ? 4、最佳、最差、平均情况时间复杂度分析 ? 5、随机算法 2、排序算法的分类 算法分类 冒泡排序 (1)冒泡排序的介绍 ? 冒泡排序是 ...
分类:
编程语言 时间:
2019-12-09 01:23:47
阅读次数:
75
排序大法总结 这里的排序都是一些函数调用,默认为int类型,从小到大,第一个参数为头指针,第二个为数组长度. 直接选择排序 时间复杂度为 $$O(n^{2})$$ 是不稳定排序. 思路: 每次选出待排区间的最值,放在第一个. 冒泡排序 时间复杂度在最坏以及平均情况下下为 ),最好情况下为 ),是稳定 ...
分类:
编程语言 时间:
2019-10-18 19:05:17
阅读次数:
85
1.电脑硬盘转速 一个7200(转/每分钟)的硬盘,每旋转一周所需时间为60×1000÷7200=8.33毫秒,则平均旋转延迟时间为8.33÷2=4.17毫秒(平均情况下,需要旋转半圈)。按照同样的计算方法,一个5400(转/每分钟)的硬盘,平均旋转延迟时间为60×1000÷5400÷2=5.56毫 ...
分类:
编程语言 时间:
2019-10-06 16:38:36
阅读次数:
112
题意 给出一个整数 $N$,每次可以在不超过 $N$ 的素数中等概率随机选择一个 $P$,如果 $P$ 是 $N$ 的约数,则把 $N$ 变成 $N/P$,否则 $N$ 不变。问平均情况下需要多少次随机选择,才能把 $N$ 变成1呢? 分析 本题可以画出一个状态转移图, 例如 $n=6$ 时, $n ...
分类:
其他好文 时间:
2019-09-18 17:30:48
阅读次数:
111
课前复习:二分查找时间复杂度(O(N))空间复杂度:范围最大的长度复杂度:粗略衡量算法好坏的刻度尺(工具)两个维度:快慢时间复杂度(重点)使用空间的情况空间复杂度时间复杂度:直接利用允许时间衡量不现实,测试环境多变,不好控制变量前提:如果指定cpu的情况下,单位时间内运行的基本指令个数是固定的如果一个算法需要的指令比另一个算法需要的指令个数小,就可以推出算法A运行的时间更快前提:算法计算的快慢和输
分类:
编程语言 时间:
2019-07-23 17:05:59
阅读次数:
104
复杂度分析 大O复杂度表示法 常见的有O(1), O(n), O(logn), O(nlogn) 时间复杂度除了大O表示法外,还有以下情况 最好情况时间复杂度 最坏情况时间复杂度 平均情况时间复杂度 均摊时间复杂度 代码执行效率分析 大多数情况下,代码执行的效率可以采用时间复杂度分析,但是大O表示法 ...
分类:
编程语言 时间:
2019-06-17 01:09:02
阅读次数:
107