选择排序图像化显示: 选择排序的基本思想:从待排序序列中找到最小(大)的元素,存放到序列起始位置,缩小排序范围,再找当前序列最小(大)的元素,放在起始位置之后,直到所有数据都被排完。时间复杂度=O(n^2)空间复杂度=O(1)最好情况:已经有序交换次数O(1)最坏情况:..
分类:
编程语言 时间:
2016-04-11 10:28:25
阅读次数:
388
快速排序是一种排序算法,最坏情况运行时间为θ(n²),但其最佳期望运行时间为θ(nlgn),并且θ(nlgn)记号中隐含的常数因子很小,快排是在就地排序的一种排序算法。快排是基于分治思想的,与归并排序一样。快速排序是一种不稳定的排序算法,因为算法实现过程中涉及到元素交换。
思路:
(1)分解:数组A[n]被划分两个字数组A[0..q-1]和A[q+1..n],使得对于数组A[0..q-1]中的元素都...
分类:
编程语言 时间:
2016-04-10 14:59:38
阅读次数:
194
当偶尔一切操作很花的时间很慢,而大多数操作的时间都很快的时候,平摊分析的方法就很很好用了。在平摊分析中,我们分析一串操作并且可以得到最坏情况下的平均时间复杂度。例如hash table, disjoint set 和splay tree都是用平摊分析算法的。 举一个简单的hash table的插入算 ...
分类:
其他好文 时间:
2016-04-06 18:28:07
阅读次数:
168
最坏,平均和最佳运行时间(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
一.最大值与最小值 最多3*(n / 2)次比较 二.在最坏情况下 找到n个元素第二小 http://blog.csdn.net/mishifangxiangdefeng/article/details/7983809 三.线性选择算法
分类:
其他好文 时间:
2016-03-13 15:51:11
阅读次数:
229
算法概述: 与归并排序一样,快速排序也是基于分治思想的一种应用。对于包含n个数的输入数组来说,快速排序是一种最坏情况时间复杂度为O(n²)的排序算法。虽然最坏情况时间复杂度很差,但是快速排序通常是实际排序应用中最好的选择,因为它的平均性能非常好:它的期望时间是O(nlgn)且隐含的常数因子非常小,能
分类:
编程语言 时间:
2016-03-08 16:28:45
阅读次数:
198
二叉查找树在最坏情况下高度可能为N-1,即插入元素时后插入的元素总比以前插入的元素大或者小。为了解决这种不平衡的情况,引入了平衡条件来限制树中节点的深度不能过深,其中最老的一种平衡树称为AVL树。这种树限制树中每个节点的左右子树的高度相差不能超过一。(另一种更严格的树限制节点的左右子树高度必须相等,
分类:
其他好文 时间:
2016-03-01 12:52:48
阅读次数:
236