本章节主要证明对包含n个元素的输入序列来说,任何比较排序在最坏情况下都要经过omega(nlgn)次比较。从而证明归并排序和堆排序是渐近最优的。同时,介绍了三种线性时间复杂度的排序算法:计数排序、基数排序和桶排序。1. 排序算法的下界在确定排序算法的下界时,借助决策树模型。决策树模型是一棵完全二叉树...
分类:
其他好文 时间:
2014-08-29 18:01:18
阅读次数:
239
1.基数排序不是基于比较的排序,是一种线性排序。2基数排序如何实现?列入:3, 22, 93, 43, 55, 14, 28, 65, 39, 81首先根据个位数的数值,在走访数值时将它们分配至编号0到9的桶子中:01 812 223 73 93 434 145 55 65678 289 39第二步...
分类:
其他好文 时间:
2014-08-29 14:23:07
阅读次数:
169
最近忙着复习找工作,熟悉了下排序算法,动手写了一下,发现有些问题的边界条件还是没有考虑清楚,不过好在调试成功。不稳定排序:堆排序,快速排序,希尔排序;稳定排序:插入排序,冒泡排序,选择排序,归并排序,基数排序等。插入排序算法代码:void InsertSort(int A[],int n){ ...
分类:
其他好文 时间:
2014-08-28 19:39:25
阅读次数:
287
【啊哈!算法】算法1:最快最简单的排序——桶排序
【啊哈!算法】算法2:冒泡排序
【啊哈!算法】算法3:八一八“快速排序”
【啊哈!算法】算法4:队列——解密QQ号
【啊哈!算法】算法5:解密回文——栈
【啊哈!算法】算法6:只有五行的Floyd最短路算法
【啊哈!算法】系列7:Dijkstra最短路算法
【啊哈!算法】算法8:巧妙的邻接表(数组实现)
【啊...
分类:
其他好文 时间:
2014-08-27 18:42:24
阅读次数:
257
#include#include#includestruct Node{ int key; Node *next; Node(int k) { key = k; next = NULL; }};void Insert(Node **phead...
分类:
其他好文 时间:
2014-08-26 22:44:26
阅读次数:
193
#include#include#includestruct Node{ int key; Node *next; Node(int k) { key = k; next = NULL; }};void Insert(Node **phead...
分类:
其他好文 时间:
2014-08-26 21:15:56
阅读次数:
154
#include#include#includevoid CountingSort(int *A,int len,int k){ int *B = new int[len]; //输出数组 memset(B,0,len*sizeof(int)); int *C = new int[...
分类:
其他好文 时间:
2014-08-26 21:10:36
阅读次数:
178
日常操作中常见的排序方法有:冒泡排序、快速排序、选择排序、插入排序、希尔排序,甚至还有基数排序、鸡尾酒排序、桶排序、鸽巢排序、归并排序等。冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就...
分类:
编程语言 时间:
2014-08-25 21:07:44
阅读次数:
373
剑指offer 2.4.1 1 #include 2 #include 3 4 void sortAges(int a[],int n) 5 { 6 const int MAXAGE=99; 7 if(a==NULL||n<=0) 8 return; 9 ...
分类:
其他好文 时间:
2014-08-23 17:42:01
阅读次数:
226
学渣乱搞系列之后缀数组 by 狂徒归来 后缀数组,其nlogn的构造方法,比较麻烦,十几个循环,基数排序?计数排序?各种排序,各种凌乱,学渣表示鸭梨很大啊!学渣从《挑战程序设计竞赛》中偷学了一点nlog2n的构造方法。字符串后缀(Suffix)是指从字符串的某个位置开始到其末...
分类:
其他好文 时间:
2014-08-23 12:30:30
阅读次数:
217