![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法与数据结构
yongbuyanqiDK
You can make a difference!
展开
-
绪论
1.基本逻辑结构有:集合、线性结构、树形结构、图形结构。2.算法的重要特性:有穷性、确定性、可行性、输入、输出。 3.算法分析:正确性、可读性、健壮性、高效率。4.时间复杂度:算法中包含简单操作的次数5.字符串在内存中有一个’\0’的结束标志:比如“hello!”,在内存中占7个字节6.函数调用的执行过程 在运行被调用函数之前: (1)将所有的参数、返回原创 2017-02-16 21:11:09 · 285 阅读 · 0 评论 -
排序
1.插入排序每步将一个带排序的记录,按其关键字值的大小插入前面已经排序的文件中适当的位置上,直到全部插入完为止。(1)直接插入排序 把待排序的记录按其关键字的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列。(2)希尔排序(shell排序) 假设有n个数字,选定第一个增量d1=n/2,把全部记录按此值从第一个记录起进行分组,所原创 2017-07-16 09:57:34 · 284 阅读 · 0 评论 -
树
1.树的基本术语 度:结点拥有的子树数。 叶子节点:度为0的结点。 分支节点:度不为0的节点 树的度:树中各节点度的最大值 深度:树中结点的最大层次2.二叉树 满二叉树:总结点数为:2^n-1,n表示树的深度 完全二叉树:叶子节点在最后两层,除最后一层外都是满的,且最后一层不能跳。只缺少右边的若干结点。3.二叉树的遍历 (1)先根序遍历 访问根节点——>左子树——>右子树原创 2017-03-22 19:13:32 · 309 阅读 · 0 评论 -
查找算法
package com.bocloud.search;public class Search { /** * 顺序查找 * * @param objects * @param object * @return */ public int search(Object[] objects, Object object) {原创 2017-03-26 16:31:58 · 342 阅读 · 0 评论 -
图
1.有向图:图的边有方向。边的取值范围为0~n(n-1),具有n(n-1)条弧的有向图称为有向完全图。 2.无向图:图的边没有方向。边的取值范围为0~n(n-1)/2,具有n(n-1)/2条弧的无向图称为无向完全图。 3.度:和顶点相关联的边的数目。以顶点为头的弧的数目称为顶点的入度,以顶点为尾的弧的数目称为顶点的出度。 4.路径的长度:路径上的边或者弧的数目。 5.图的遍历:从图中某一个顶原创 2017-03-26 16:27:58 · 336 阅读 · 0 评论 -
队列
1.队列:只允许在表的一端插入,在表的另外一端进行删除的线性表。特定是先进先出。 2.顺序队列:由一个存放队列元素的一维数组,以及分别指示队头和队尾的指针所组成。队尾指针指示队尾元素在一维数组中的当前位置,队头指针指示队头元素在一维数组中的当前位置的前一个位置。 3.循环队列的算法实现package com.bocloud.queue;/** * 操作队列的接口 * * @author原创 2017-03-05 21:41:39 · 348 阅读 · 0 评论 -
栈
1.栈:是限制仅在表的一端进行插入和删除操作的线性表。特点是后进先出。 2.顺序栈的算法实现package com.bocloud.stack;/** * 栈操作接口 * * @author dongkai * */public interface StackIntf { public void push(int x); public int pop(); publ原创 2017-03-05 21:15:03 · 398 阅读 · 0 评论 -
数组和字符串
1.数组:是一种特殊的线性表,表中的数据元素本事也是一个数据结构,即元素的值可以再分解。数组是由同一种数据类型的数据元素组成。它的每一个元素由一个值和一组下标确定。2.字符串:一组常用的字符组成的有限序列。3.串的长度:串中字符的数目n称为串的长度。空格也是一种字符。4.非空字串个数计算:n*(n+1)/25.两个串相等:长度相等并且各个对应位置的字符都相等。原创 2017-03-05 21:09:46 · 320 阅读 · 0 评论 -
线性表——单链表
1.链表:单链表、循环链表和双向链表 2.链表:用一组任意的存储单元存储线性表的数据元素,数据元素之间的逻辑关系借助指示元素位置的指针来表示,存储数据元素的节点包括2个域:一个数据域,存储数据元素的基本信息,一个指针域存储直接后继元素的存储位置。 3.单链表:链表中每个节点只含有一个指针域。 4.算法实现package com.bocloud.link;/** * 节点类 * * @a原创 2017-02-20 17:03:04 · 366 阅读 · 0 评论 -
线性表——循环链表和双向链表
1.循环链表:首尾相连的链表。 2.单循环链表:在单链表中,如果最后一个结点的链域值不是NULL,而是指向头结点,则整个链就形成了一个环。 3.双向链表:链表的每一个结点中有2个指针域,一个指向直接后继,一个指向直接前驱。 4.双向循环链表:将双向链表中的头结点和尾结点链接起来。 5.判断双向循环链表为空的条件:头结点的前驱和后继指针均指向了自己。 6.算法package com.bocl原创 2017-03-01 09:38:15 · 802 阅读 · 0 评论 -
线性表——顺序表
1.线性结构:线性表、栈、队列和串2.线性表主要的物理存储结构有两种:顺序存储结构和链式存储结构。用顺序存储结构存放的线性表称为顺序表,用链式存储结构存放的线性表为线性链表。3.顺序表:在内存中开辟一片连续的存储空间,用一组连续的存储单元依次存放这些数据。 特点:在逻辑上相邻的数据元素,它们的物理位置也是相邻的。 优点:(1)随机存取元素容易实现;(2)简单直观原创 2017-02-16 23:08:50 · 330 阅读 · 0 评论 -
数据结构中常见的树(BST二叉搜索树、AVL平衡二叉树、RBT红黑树、B-树、B+树、B*树)
数据结构中常见的树(BST二叉搜索树、AVL平衡二叉树、RBT红黑树、B-树、B+树、B*树) BST树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right); 2.所有结点存储一个关键字; 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树;转载 2017-07-26 10:06:51 · 423 阅读 · 0 评论