前言 前面差不多学习了插入排序、选择排序、冒泡排序、归并排序。这些排序除了归并排序在时间上消耗为:θ(nlgn)外,其余排序时间消耗都为:θ(n2). 接下来要讲的就是两种比较优雅的比较排序算法:堆排序和快速排序。 堆排序最坏情况下可以达到上界:ο(nlgn).快速排序平均情况下可以达到:θ(nlg ...
分类:
编程语言 时间:
2016-04-13 23:51:02
阅读次数:
313
之前我们讨论了渐进分析,最佳最坏平均情况的分析以及渐进符号。在这一篇中我们分析一下迭代的简单程序。 1. O(1): 如果程序中没有包含任何的循环,递归或者任何的非常数时间的函数,我们就说这个程序的时间复杂度为O(1)。例如简单的swap()函数就是O(1) 这个程序也是O(1)因为C是常数。所以整 ...
分类:
其他好文 时间:
2016-04-06 09:31:59
阅读次数:
172
最坏,平均和最佳运行时间(Worst, Average and Best Cases) 在上一篇文章中,我们讨论到了渐进分析可以解决分析算法的问题,那么在这一篇中,我们用线性搜索来举例说明一下如何用渐进分析法来分析算法的性能。 我们从三个方面分析算法: 1.最坏情况 2.平均情况 3.最佳情况 这是 ...
分类:
编程语言 时间:
2016-04-05 09:24:16
阅读次数:
273
交换排序(冒泡排序、快速排序) 插入排序(直接插入排序、希尔排序)、 选择排序(直接选择、堆排序) 归并排序 基排序 1.冒泡排序 时间复杂度:最优情况下是O(n),最坏情况和平均情况是O(n2) 空间复杂度:O(1) 稳定 算法实现是 从小到大排序 结果是1 2 3 5 6 7 2 快速排序 时间 ...
分类:
编程语言 时间:
2016-04-02 17:31:55
阅读次数:
221
数据结构中的7种排序算法排序是将一个记录的任意序列重新排列成一个按键值有序的序列。
时间复杂度主要考虑元素的移动次数。
结构如下:
1.直接插入排序
1,定义:依次将待排序序列中的每一个记录插入到一个已经排好序的序列中,直到全部记录都排好序。
2,时间复杂度:在最好情况下,待排序序列为正序,时间复杂度为O(n);最坏情况下,待排序序列为逆序,时间复杂度为O(n^2);平均情况下,时间...
分类:
编程语言 时间:
2016-03-31 21:55:16
阅读次数:
357
排序方法 平均情况 最好情况 最坏情况 辅助空间 稳定性 冒泡排序 O(n^2) O(n) O(n^2) O(1) 稳定 选择排序 O(n^2) O(n^2) O(n^2) O(1) 不稳定 插入排序 O(n^2) O(n) O(n^2) O(1) 稳定 希尔排序O(n*log(n))~O(n^2) ...
分类:
编程语言 时间:
2016-03-27 01:28:20
阅读次数:
155
题目链接:uva 11605 - Lights inside a 3d Grid 题目大意:给定一个三维坐标系大小,每一个位置有一个灯。初始状态为关。每次随机选中两个点,以这两点为对角线的长方体内全部灯转变状态。操作K次。问说平均情况下。最后会有多少栈灯亮着。 解题思路:枚举坐标系上的点。计算单个点
分类:
其他好文 时间:
2016-02-25 23:00:10
阅读次数:
168
算法 最坏情况 平均情况/期望运行时间 插入排序 Θ(n^2) Θ(n^2) 归并排序 Θ(nlg(n)) Θ(nlg(n)) 堆排序 O(nlg(n)) 快速排序 Θ(n^2) Θ(n^2)(期望) 计数排序 Θ(k+n) Θ(k+n) 基数排序 Θ(d(k+n)) Θ(d(k+n)) 桶排序 Θ
分类:
编程语言 时间:
2016-02-23 20:40:34
阅读次数:
182
基数排序的性能排序类别排序方法时间复杂度空间复杂度稳定性复杂性平均情况最坏情况最好情况基数排序基数排序O(d(n+r))O(d(n+r))O(d(n+r))O(n+r)稳定较复杂时间复杂度:假设在基数排序中,r为基数,d为位数。则基数排序的时间复杂度为O(d(n+r))。可以看出,基数排序的效率和初...
分类:
编程语言 时间:
2015-10-04 22:12:26
阅读次数:
326
基本思想 1.先从数列中取出一个数作为基准数。 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。 3.再对左右区间重复第二步,直到各区间只有一个数。性能 时间复杂度:平均情况下的时间复杂度为O(nlogn)。最坏情况下时间复杂度为O(n2)。 空间复杂度:除...
分类:
编程语言 时间:
2015-10-04 18:23:29
阅读次数:
238