![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
慵懒de疯子
做真实可爱的自己......
展开
-
栈的应用之括号的匹配
题目:假设表达式中允许包含三种括号:圆括号、方括号、花括号,其嵌套的顺序随意。 例题如下: char a[] = "(())abc{[(])}"; // 左右括号次序匹配不正确 char b[] = "(()))abc{[]}"; // 右括号多于左括号 char c[] = "(()()abc{[]}"; // 左括号多于右括号 char d[] = "(())ab原创 2017-11-25 22:32:02 · 332 阅读 · 0 评论 -
排序之交换排序(快排)
1、冒泡排序:稳定 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,一次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素已经排序完成。 基本思想: (1)比较相邻的元素。如果第一个比第二个大,就交换他们两个...原创 2018-08-03 18:06:40 · 453 阅读 · 0 评论 -
排序之选择排序
二、选择排序 1、选择排序(区间在不断地变小 ) 基本思想: 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 (首先,选出最小的数放在第一位,然后选择第二小的数,放在第二位;以此类推,直到所有的数从小到大排列.那么,对于大小为N的数组需要...原创 2018-07-23 13:11:52 · 570 阅读 · 0 评论 -
并查集-----小米面试题之朋友圈问题
先来看一下题目: 已知有n个人和m个好友关系(存在数字r),如果两个人是直接或者间接的好友(好友的好友的好友……),则认为他们属于同一个朋友圈。请写程序求出这n个人里一共有多少个朋友圈? 例如:n=5,m=3,r={{1,2},{2,3},{4,5}},表示有5个人,1和2是好友,2和3是好友,4和5是好友,则1、2、3属于一个朋友圈,4、5属于一个朋友圈。最终结果就是2个朋友圈...原创 2018-04-19 19:12:36 · 465 阅读 · 0 评论 -
遍历二叉树-------递归&非递归
一、什么是树?什么又是二叉树 (1)树的定义 树是一种特殊的数据结构,是由N(N>=0)个节点构成的具有层次关系的集合。每棵树都有一个特殊的结点,就是根结点,根节点没有前驱结点;除过根节点的其余结点被分为若干个互不相交的集合,称之为子树;每个子树的根结点有且仅有一个前驱,可以有0个或者多个后继 (2)那么问题来了,什么是二叉树嘞?二叉树是每个结点最多有两个子树的有序树(它由一...原创 2018-04-10 21:48:12 · 230 阅读 · 1 评论 -
浅析堆的基本操作以及堆排序
一、堆的基本介绍1、堆的概念 堆是一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组的对象。堆满足以下的性质 (1)堆中某个节点的值总是不大于或不小于其父节点的值 (2)堆总是一棵完全二叉树2、堆的分类 (1)最小堆:任一节点的关键码均小于等于它的左右孩子的关键码,位于堆顶的节点的关键码最小(向上调整) (2)最大堆:任一节点的...原创 2018-03-27 21:50:05 · 414 阅读 · 0 评论 -
浅析B-树分裂
一、B-树的定义(适合查找的平衡的多叉树。) 一颗M阶(M>2)的B-树,是一颗平衡的M路平衡搜索树,可以是空树或者满足B-树的性质二、B-树的性质? (1) 根节点至少有两个孩子 (2) 每个非根节点至少有M/2(上取整)个孩子,至多有M个孩子 (3) 每个非根节点至少有M/2-i个关键字,至多有M-1个关键字,并且以升序排列 (4)...原创 2018-03-17 17:24:58 · 5455 阅读 · 0 评论 -
有关AVL树的平衡化旋转和插入
一、AVL树的概念 1、定义:一棵高度平衡的二叉搜索树,就是AVL树。 2、性质: (1) 它的左右子树均为AVL树 (2) 左子树和右子树的高度之差(简称平衡因子)的绝对值不超过1(-1、0、1) 3、平衡因子的计算方法:左右子树的高度差二、AVL树的平衡化旋转 1、左单旋:插入的节点位于较高右子树的右侧(右...原创 2018-03-17 17:17:53 · 395 阅读 · 0 评论 -
栈的应用之计算后缀表达式
后缀表达式也称逆波兰表达式,为什么要叫逆波兰表达式嘞?当然是因为有一个波兰人发明了波兰表达式,而逆的波兰表达式就被叫做“逆波兰表达式”喽! 我们一般表述一个算式的时候通常为:X+Y,即为:“操作数1 操作符 操作数2”,而比较特殊一点的就是平方根函数:“sqrt(N)”,sqrt为操作符,N是操作数。 而逆波兰表达式则是先操作数,后表达式。 eg:12*(3+4)-6+8/2 转换为 ...原创 2018-03-10 15:56:28 · 1728 阅读 · 0 评论 -
排序之插入排序
一、什么是排序 1、概念 排序就是将一组杂乱无章的数据按照一定的规律(升序或者降序)组织起来 2、分类 3、各排序之间的时间复杂度&空间复杂度&稳定性 二、插入排序 1、直接插入排序 基本思想: 当插入第i(i>=1)个元素时,前面的array[0],array[1],…,array[i-1]已经排好 序,此时用array[i]的排序...原创 2018-07-23 09:18:02 · 767 阅读 · 1 评论