参考书籍:《数据结构与算法分析——C语言描述》
快速排序是在实践中最快的已知排序算法,它的平均时间复杂度O(NlogN)。当然在最坏的情况下为O(N^2),但稍加努力就可以避免这种情形。
像归并排序一样,快速排序也是一种分治的递归算法,可简单表示如下:
将数组S排序的基本算法由下列简单的四步组成。
1、数组元素至少大于或等于4个,否则直接利用插入排序完成。
2、利用特定方法(三数...
分类:
编程语言 时间:
2015-05-09 16:40:30
阅读次数:
129
参考书籍《数据结构与算法分析——C语言描述》
插入排序,简而言之,就是对于第i个数,前i-1个数是已排序的,第i个数则要从第i-1个数开始往前遍历,比较大小,比它大的往后移一位,比它小的则其后为要的插入的位置,则在此处插入即可。插入后会发现前i个数都变成已排序的了(此处应注意体会)。于是依此类推插入第i+1个数。此方法最坏的时间复杂度也会达到O(n^2)的。
例如初始序列:
34 8
6...
分类:
编程语言 时间:
2015-04-27 17:01:38
阅读次数:
176
树是编程中一种常用的数据结构。以前在学习数据结构时,总想着如何实际地实现出一颗二叉树出来,现在参考了《数据结构与算法分析 JAVA语言描述 第二版》之后,照着书中的例子实现了一颗二叉树,个人感觉书上面的二叉树实现操作比较复杂。下面将我学到的一些知识记录下来:1,定义树的操作的基本接口,其中不包括插入...
分类:
编程语言 时间:
2015-04-25 22:33:25
阅读次数:
250
参考书籍《数据结构与算法分析——C语言描述》
关于堆的一些基本概念,可参见小zz的另一篇博文。
/*本例程实现的是最小堆,最大堆类似*/
#include
#include
#include
#include
#define MAX 13
typedef struct BHeap
{
int Capacity;//堆的最大容量
int Size;//当前堆大小
in...
分类:
其他好文 时间:
2015-04-15 23:27:29
阅读次数:
235
参考书籍《数据结构与算法分析——C语言描述》
连接俩个节点的称为边
一棵树是N个节点和N-1条边的集合
没有儿子的节点称为树叶(叶)。
具有相同父亲的称为兄弟。
对任意节点ni,ni的深度为从根到ni的唯一路经长,其中根的深度为0。一棵树叶的深度等于它最深的树叶深度。
ni的高是从ni到一片树叶的最长路径的长,一棵树的高等于它根的高,所有树叶的高都是0.
某路径的长为该路径...
分类:
其他好文 时间:
2015-04-13 09:39:01
阅读次数:
129
不知道大家在刚开始看《数据结构与算法分析——C语言描述》散列一章的时候,能不能理解书上的内容,小ZZ看的时候就没怎么看明白。于是就去问度娘,度娘给了我这样一篇文章。里面介绍了散列的基本定义以及常用的实现方法,比较通俗易懂(可能是智商有点拙计)。
http://blog.csdn.net/u010275850/article/details/44963701
先看完了这篇博文,然后再看书上的...
分类:
其他好文 时间:
2015-04-12 13:28:33
阅读次数:
172
出自数据结构与算法分析--C语言描述 习题2.7在有个函数int rand(int n)返回1-n之间的随机数。如何把数组A[N]打乱?最初的Fisher–Yates算法是在另外开辟一个数组B[N],把打算后的A[N]放到B[N]中,步骤如下设i=01、生成1-A.length长度之间的随机数k2、...
分类:
编程语言 时间:
2015-04-09 19:37:43
阅读次数:
148
最近看《数据结构与算法分析》一书,书中提供的一些算法太棒了,忍不住动手实现了下。有错误请指出,谢谢。
最大子序列问题求解:1.第一种解法:int MaxSubSequence(const int array[], int length){
if (length < 0) //数组长度不可以为0.
return 0;
int MaxSum = 0,ThisSum;...
分类:
编程语言 时间:
2015-04-09 13:45:40
阅读次数:
144
关于栈的基本概念以及和Catalan数的关系,可以参见我的其他文章
参考资料《数据结构与算法分析——C语言描述》
#include
#include
/*栈的链表实现*/
typedef struct StackNode
{
struct StackNode *next;
int data;
}StackNode,*Stack;
Stack CreateStack(...
分类:
其他好文 时间:
2015-04-08 23:29:30
阅读次数:
354
参考资料:《数据结构与算法分析——C语言描述》4.3一节
#include
#include
#define N 10
typedef struct BinTreeNode
{
int data;
struct BinTreeNode *left;
struct BinTreeNode *right;
}BinTreeNode,*BinTree;
BinTree in...
分类:
其他好文 时间:
2015-04-07 21:39:31
阅读次数:
133