数据结构/算法
文章平均质量分 87
what_lei
一只来自电子与通信的研究僧
展开
-
递归
递归概念: 递归算法是一种直接或者间接调用自身函数或者方法的算法。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。 使用递归的两个条件: 既然递归的思想是把问题分解成为规模更小且与原问题有着相同解法的问题,那么是不是这样的问题都能用递归来解决呢?答案是否定的。并不是所有问题都能用递归来解决。那么什么样的问题可以用递归来解决呢?一般来讲,能用递归来解决的问题必须满原创 2016-08-15 12:12:12 · 399 阅读 · 0 评论 -
二叉树的建立与遍历(前序,中序,后序)
二叉树(Binary Tree): 定义:二叉树是n(n>=0)个结点的优先集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树组成。 链式存储结构(二叉链表):由一个数据域(data)和两个指针域构成(lchild,rchild分别指向左右孩子)。如下图: 例如: 二叉链表的结点结构定义代码: typedef stru原创 2016-08-15 23:02:06 · 5018 阅读 · 0 评论 -
二叉搜索树
二叉搜索树(BinarySearch Tree,也叫二叉搜索树,或称二叉排序树Binary Sort Tree): 定义:二叉查找树或者是一棵空树,或者是具有下列性质的二叉树: (1)、若它的左子树不为空,则左子树上所有结点的值均小于它的根结点的值; (2)、若它的右子树不为空,则右子树上所有结点的值均大于它的根结点的值; (3)、它的左、右原创 2016-08-16 12:46:14 · 208 阅读 · 0 评论 -
C++实现几大排序算法
问题: 输入:n个数:a1,a2,a3,...,an 输出:n个数的排列:a1',a2',a3',...,an',使得a1' 直接排序算法: 将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。 适用范围:对于少量元素的排序。 编程思想: 直接插入排序是由两层嵌原创 2016-07-03 14:15:35 · 952 阅读 · 0 评论 -
单链表
单链表:是一种链式存取的数据结构,用一组地址任意的存储单元(这组存储单元既可以是连续的,也可以是不连续的)存放线性表中的数据元素。 单链表结构示意图: 单链表结构体定义: typedef struct Node { ElemType data; struct Node *next; }Node; typedef struct Node *LinkList; /* 定义Li原创 2016-08-02 19:13:37 · 295 阅读 · 1 评论 -
二分查找
二分查找算法:是一种在有序数组中查找某一特定元素的搜索算法。 二分查找思想:搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组 为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。折半搜索每次把搜索区域减少一半,时间复杂度为Ο原创 2016-07-22 11:21:47 · 3476 阅读 · 0 评论