数据结构和算法
zmx1026
这个作者很懒,什么都没留下…
展开
-
八大排序算法
概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。 当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。 快速排序:是目前基于比较的内部排序中被认为是最好的方法,转载 2015-03-15 16:54:34 · 407 阅读 · 0 评论 -
二叉树的建立和遍历
#include #include typedef int Element ;typedef struct BitTree{ Element data; struct BitTree *lchild,*rchild;}BitNode,*Bit;//先序遍历创建二叉树void creatorBitTree(Bit *T){ int ch; s原创 2015-04-06 14:32:18 · 382 阅读 · 0 评论 -
排序——堆排序
堆排序堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是完全二叉树。大根堆的要求是每个节点的值都不大于其父节点的值,即A[PARENT[i]] >= A[i]。在数组的非降序排序中,需要使用的就是大根堆,因为根据大根堆的要求可知,最大的值一定在堆顶。堆分为原创 2015-04-01 18:57:01 · 414 阅读 · 0 评论 -
排序——快速排序
快速排序快速排序(Quicksort)是对冒泡排序的一种改进。快速排序由C. A. R. Hoare在1962年提出。它的基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,相当于此数据已经在该排序的正确位置,然后再按此方法对这两部分数据分别进行快速排序,以此类推让所有的数据都在排序的正确位置,整个排序过程可以递归进行,以原创 2015-03-31 09:23:02 · 407 阅读 · 0 评论 -
排序——冒泡排序
冒泡排序算法分析时间复杂度若文件的初始状态是正序的,一趟扫描即可完成排序。所需的关键字比较次数 和记录移动次数 均达到最小值: , 。所以,冒泡排序最好的时间复杂度为 。 若初始文件是反序的,需要进行 趟排序。每趟排序要进行 次关键字的比较(1≤i≤n-1),且每次比较都必原创 2015-03-15 16:27:52 · 483 阅读 · 0 评论 -
排序——归并排序
归并排序归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并操作(merge),也叫归并算法,指的是将两个顺序序列合并成一个顺序序列的方法。如设有数列{6,202,1原创 2015-03-31 12:40:27 · 397 阅读 · 0 评论 -
排序——插入排序
插入排序插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。步骤:从第一个元素开始原创 2015-03-14 16:29:07 · 386 阅读 · 0 评论 -
二叉树的存储结构
二叉树的存储结构 二叉树是非线性结构,即每个数据结点至多只有一个前驱,但可以有多个后继。它可采用顺序存储结构和链式存储结构。1.顺序存储结构 二叉树的顺序存储,就是用一组连续的存储单元存放二叉树中的结点。因此,必须把二叉树的所有结点安排成为一个恰当的序列,结点在这个序列中的相互位置能反映出结点之间的逻辑关系,用编号的方法从树根起,自上层至下层,每层自左至右地给原创 2015-03-02 20:56:49 · 713 阅读 · 0 评论 -
树和二叉树
1.树的定义和基本运算1.1 定义 树是一种常用的非线性结构。我们可以这样定义:树是n(n≥0)个结点的有限集合。若n=0,则称为空树;否则,有且仅有一个特定的结点被称为根,当n>1时,其余结点被分成m(m>0)个互不相交的子集T1,T2,...,Tm,每个子集又是一棵树。由此可以看出,树的定义是递归。 结点:数据元素的内容及其指向其子树根的分支统称为结点。原创 2015-03-02 20:24:05 · 435 阅读 · 0 评论 -
遍历二叉树的各种操作(非递归遍历)
转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/6583988 先使用先序的方法建立一棵二叉树,然后分别使用递归与非递归的方法实现前序、中序、后序遍历二叉树,并使用了两种方法来进行层次遍历二叉树,一种方法就是使用STL中的queue,另外一种方法就是定义了一个数组队列,分别使用了front和rea转载 2015-03-02 20:34:29 · 461 阅读 · 0 评论 -
排序——希尔排序
希尔排序希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。基本思想:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。因为直接插入排序在元素基本有序的情况下(接近最好情况),原创 2015-03-15 12:01:12 · 417 阅读 · 0 评论 -
平衡二叉树
平衡二叉树平衡二叉树简称平衡树,是由Adelson-Velskii和Landis于1962年首先提出的,所以又称为AVL树,平衡二叉树的性质如下:它的左子树和右子树都是平衡二叉树,且左子树和右子树的深度之差的绝对值不超过1。平衡因子BF=左子树的深度-右子树的深度,BF只能为-1,0,1。平衡二叉树是对二叉搜索树(又称为二叉排序树)的一种改进。二叉搜索树有一个缺点就是,树的结构是无法预原创 2015-05-11 21:50:21 · 475 阅读 · 0 评论