数据结构与算法
爱coding的卖油翁
我亦无他 惟手熟尔
展开
-
(郝斌讲学)数据结构学习篇(五)---队列的CRUD操作
队列 什么是队列?一种可以实现“先进先出”的存储结构。 出队 入队 -->>队列出栈 压栈 -->>栈 链式队列 ---用链表实现的静态队列 ---用数组实现的静态队列通常必须是循环队列.. 039.循环队列需要几个参数来确定极其含义的讲解front代表的是队列的第一个元素rear代表的是队列的最后一个有效元素的下一个元素 队原创 2014-08-24 15:42:39 · 1005 阅读 · 0 评论 -
二分搜索
查找搜索在我们平时的开发中,用到的还是挺多的,所以对于一般的搜索算法,我们也是需要了解一下的。问题:查找指定元素的位置 public int binarySearch(int[] array, int target) { // O(Log2N) O(1) if (array == null || array.length == 0) return -1; ...原创 2018-03-30 21:27:10 · 1264 阅读 · 0 评论 -
集体拍照
集体拍照排序今天一朋友面试,遇到一个算法题,我正好看到了,就来解一下,不是最优解,先记录一下吧。要求如下:每排人数为N/K(向下取整),多出来的人数全部站在最后一排后排所有人的个子都不比前排任何人矮每排中最高者站中间(中间位置为m/2+1,其中m为该排人数,除法向下取整)每排其他人以中间人为轴,按身高非增序,先右后左交替入队站在中间人的两侧(例如5人身高为190、188、186...原创 2018-03-13 20:52:57 · 1361 阅读 · 0 评论 -
(郝斌讲学)数据结构学习篇(七)---树
树定义 专业定义:有且只有一个称为根的节点,有若干个互不相交的子树,这些子树的本身也是一棵树。 通俗的定义:树是由节点和边组成;每个节点只有一个父节点但可以有多个子节点;但有一个节点例外,该节点没有父节点,此节点称为根节点。 专业术语 节点 父节点 子节点 子孙 堂兄弟 深度深度:从根节点到底层节点的层数称之为深度。根节点是第一层.叶原创 2014-08-30 19:38:06 · 1259 阅读 · 0 评论 -
数据结构学习笔记(四)---遍历二叉树
遍历二叉树 二叉树是一种非线性的数据结构。所谓的遍历二叉树就是按某种顺序访问二叉树中的每个节点,要求每个节点被访问一次且仅一次。遍历操作实际上是将非线性结构线性化过程,其结果为线性序列。 二叉树的操作(1)先序遍历---结束的条件是二叉树是否为空 TLR先访问根节点;再先序访问左子树;再先序访问右子树。(2)中序遍历---结束的条件是二叉树是否为原创 2014-08-29 16:34:08 · 1166 阅读 · 0 评论 -
数据结构学习笔记(一)---汉诺塔
汉诺塔 汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。 汉诺塔算法:n=1 1次n=2 3次n=3 7次原创 2014-08-26 20:46:16 · 942 阅读 · 0 评论 -
(郝斌讲学)数据结构学习篇(六)---递归专题
递归专题 递归:一个函数自己直接或间接调用自己 死递归—不停的压栈、出栈 128次 递归满足三个条件:1. 递归必须得有一个明确的中止条件2. 该函数所处理的数据规模必须在递减3. 这个转化必须是可解的 递归和循环的比较递归:易于理解 速度慢 存储空间大循环:不易理解原创 2014-08-26 21:12:28 · 1005 阅读 · 0 评论 -
(郝斌讲学)数据结构学习篇(一)---大纲、简介、作用
数据结构的概述 01.02.03课程预备知识:模块一:线性结构连续存储(数组)离散存储(链表)线性结构的两种常见应用之一:栈线性结构的两种常见应用之二:队列专题:递归1. 1+2+3+......+100的和2. 求阶乘3. 3.汉诺塔4. 走迷宫 模块二:非线性结构树图 模块三:查找和排序排序:冒泡、插入、选择、快速原创 2014-08-13 21:02:21 · 2312 阅读 · 0 评论 -
数据结构学习笔记(三)---求1+2+3+...+100的和
求1+2+3+…+100的和用递归实现原创 2014-08-26 21:00:41 · 1036 阅读 · 0 评论 -
数据结构学习笔记(二)---求阶乘(递归与非递归)
求100!的阶乘递归算法:原创 2014-08-26 20:58:18 · 1636 阅读 · 0 评论 -
(郝斌讲学)数据结构学习篇(三)---链表的CRUD操作
024.链表的创建和链表遍历的算法演示#include #include #include typedef struct Node{ int data; struct Node *pNext;}NODE, *PNODE; //NODE 等价于struct Node, PNODE 等价于struct Node *//函数声明PNODE create_list(void);原创 2014-08-24 14:42:37 · 1532 阅读 · 0 评论 -
(郝斌讲学)数据结构学习篇(二)---数组的操作连续存储
012.连续存储数组的算法演示线性结构:把所有的结点用一根直线穿起来.一个字节有4个地址。 实现一个数组的案例#include#include#include //包含了exit函数 struct Arr{int * pBase; //数组第一个元素的地址int len; //数组的长度int cnt; //当前数组有效元素的个数};原创 2014-08-17 18:10:21 · 1083 阅读 · 0 评论 -
(郝斌讲学)数据结构学习篇(四)---栈的CRUD操作
栈栈类似于箱子。静态栈、动态栈。 关于栈的操作#include#include#includetypedef struct Node{ int data; struct Node *pNext;}NODE, *PNODE;typedef struct Stack{ PNODE pTop; PNODE pBottom;}STACK, *PSTACK;原创 2014-08-24 15:44:21 · 1008 阅读 · 0 评论 -
链表的合并
对于链表的操作,还有几个是比较常用的,比如:将两个已排序的链表合并成一个长的排序链表;在已排序的链表中插入一个元素;对一个无序链表根据给定的某个值,进行分区。现在,我们就来看看这三个问题。问题:如何将两个排序链表合并成一个长排序链表分析:有两个链表curr1,curr2,构建一个新的链表 dummy,遍历 curr1 和 curr2,比较 curr1 和 curr2,谁小移动谁,用 c...原创 2018-03-25 22:20:43 · 3092 阅读 · 0 评论