1. 比较排序算法的下界 (1) 比较排序 到目前为止,我们已经介绍了几种能在O(nlgn)时间内排序n个数的算法:归并排序和堆排序达到了最坏情况下的上界;快速排序在平均情况下达到该上界。 如果仔细观察,我们会发现:在排序的最终结果中,各元素之间的次序依赖于它们之间的比较。我们把这类排序算法统称为比...
分类:
编程语言 时间:
2015-09-23 19:25:12
阅读次数:
233
堆排序可以作为实时排序,是原址排序,不需要额外的空间,时间复杂度是O(nlgn),最好最坏平均情况都是这个,但是是不稳定排序,下面是C语言实现的代码。。
//为了简化编程,堆数组元素中的第一个位置不使用。
struct heap {
int size;
int *arr;
} h;
void max_heapify(struct heap * h, int p)
{
...
分类:
编程语言 时间:
2015-08-03 01:17:47
阅读次数:
170
的基本算法1 算法原理2 划分的实现过程高速排序算法的性能分析1最坏情况2 最好情况3 平均情况參考资料1. 基本算法1.1 算法原理高速排序是一种分治排序算法。它将数组划分为左右两个部分,然后分别对这两部分排序。关键在划分的过程中。它将重排数组,使的下面条件成立:对于某个划分元素指...
分类:
编程语言 时间:
2015-07-26 20:47:05
阅读次数:
269
桶排序①简介 桶排序假设输入数据服从均匀分布,平均情况下它的时间代价为O(n)。桶排序假设输入是由一个随机过程产生,该过程将元素均匀,独立的分布在[0,1)区间上。②原理 桶排序将[0,1)区间划分为n个相同大小的子区间,或称为桶。然后将n个输入的数据分别放到各个桶中。因为输入数据是均匀分布的,一般不会出现很多数落在一个桶中的情况。为了得到输出结果,先对每个桶中的数据进行排序,再遍历每个...
分类:
编程语言 时间:
2015-07-01 10:07:44
阅读次数:
142
桶排序假设输入数据服从均匀分布,平均情况下它的时间代价为O(n);它的工作原理就是将数组分到有限数量的桶子里,每个桶子在使用其他排序算法或者递归的方式使用桶排序。
假如要对大小为[1…1000]范围内的n个数进行排序,可以把桶的大小设为10,那么就会产生100个桶。把输入的n个元素依次放到与之对应的桶中,然后对每个桶在进行排序,这样我们依次输出每个桶中的数据就得到了一个排序好的序列。将元素通过恰...
分类:
编程语言 时间:
2015-05-26 21:30:14
阅读次数:
155
概述
??插入排序非常类似于整扑克牌。在开始摸牌时,左手是空的,牌面朝下放在桌上。接着,一次从桌上摸起一张牌,并将它插入到左手一把牌中的正确位置上。为了找到这张牌的正确位置,要将它与手中已有的牌从右到左地进行比较。无论什么时候,左手中的牌都是排好序的。
??如果输入数组已经是排好序的话,插入排序出现最佳情况,其运行时间是输入规模的一个线性函数。如果输入数组是逆序排列的,将出现最坏情况。平均情况与...
分类:
编程语言 时间:
2015-05-18 16:50:00
阅读次数:
154
根据带排序数据是否全部放入内存,排序分为内排序和外排序。
下面就根据我看书的体会,主要分析内排序的性能。
内排序的种类:插入排序(直接插入排序,希尔排序),选择排序(简单选择排序、堆排序),交换排序(冒泡排序、快速排序),归并排序。
其中用的比较多的是插入排序、归并排序、快速排序。
排序算法的比较:性能的比较可以从以下5个方面进行分析:时间复杂度(平均情况、最好情况、最差情...
分类:
编程语言 时间:
2015-05-06 10:58:22
阅读次数:
150
算法名称 平均情况 最好情况 最坏情况 辅助空间直接插入排序 O(n^2) O(n) O(n^2) O(1)希尔排序 O(nlgn)-O(n^2) O(n^1.3) O(n^2) O(1)起泡排序 O(n^2) O(n) O(n^...
分类:
编程语言 时间:
2015-04-12 15:59:07
阅读次数:
116
1.快速排序:不稳定排序,最好情况O(nlogn),最差情况O(n^2).平均情况在所有nlogn排序中最快的排序快速排序分两步第一步是将l-r区间进行分块(假设将区间最后一个作为关键字)前面一块的数比小于等于关键字,后面一块大于关键字,并返回第一个大于关键字的位置,即函数partition第二部是...
分类:
编程语言 时间:
2015-03-11 19:39:29
阅读次数:
146
1. 分类2. 7种内排序算法的各种指标排序方法平均情况最好情况最坏情况辅助空间稳定性移动次数的平均情况移动次数的最好情况移动次数的最坏情况冒泡排序O(n2)O(n)O(n2)O(1)稳定O(n2)0O(n2)简单选择排序O(n2)O(n2)O(n2)O(1)稳定O(n)0O(n)直接插入排序O(n...
分类:
编程语言 时间:
2015-03-10 23:03:32
阅读次数:
353