数据结构与算法
DayDreammerⅠ
这个作者很懒,什么都没留下…
展开
-
【堆】建堆 | 删除栈顶元素 | 添加元素 | 堆排序
堆的定义 堆是一棵完全二叉树,树中每个结点的值都不小于(或不大于)其左右孩子结点的值。 如果父亲结点大于或等于孩子结点的值,那么称这样的堆为最大堆。反之,最小堆。以下都以最大堆作为实例。 int heap[100]; 建堆 建堆的过程是不断调整的过程,每次调整都是把结点从上往下的调整(父结点和子结点的交换),即向下调整。 调整方法是这样的:总是将当前结点V与它的左右孩子比较(如果有...原创 2019-02-21 17:54:20 · 1246 阅读 · 0 评论 -
【二叉查找树】二叉搜索树的操作集
就用这道题来总结二叉搜索树的用法吧!二叉搜索树的操作集 本题要求实现给定二叉搜索树的5种常用操作。 函数接口定义: BinTree Insert( BinTree BST, ElementType X ); BinTree Delete( BinTree BST, ElementType X ); Position Find( BinTree BST, ElementType X ); P...原创 2019-02-18 10:36:09 · 289 阅读 · 0 评论 -
【二叉树】建立 | 先序遍历 | 中序遍历 | 后序遍历 | 层次遍历
#include<cstdio> #include<stdlib.h> #include<queue> using namespace std; typedef struct Node { char data; Node *left; Node *right; }node; //指typdef struct Node node //结构体定义新变量...原创 2019-02-15 12:06:38 · 215 阅读 · 0 评论 -
【BFS】矩阵“块”问题 | 迷宫的最少步数 | 队列副本
矩阵“块”问题 给出一个m*n的矩阵,矩阵中的元素为0或1。称位置(x,y)与其上下左右四个位置(x,y+1)、(x,y-1)、(x+1,y)、(x-1,y)是相邻的。如果矩阵中有若干个1是相邻的。如果矩阵中有若干个1是相邻的(不必两两相邻),那么称这些1构成了一个“块”。求给定的矩阵中“块”的个数。 ...原创 2019-02-14 17:40:43 · 511 阅读 · 0 评论 -
【DFS】背包问题 | 从N个整数中选择K个数
背包问题 有n件物品,每件物品的重量为w[i],价值为c[i]。现在需要选出若干件物品放入一个容量为V的背包中,使得在选入背包的物品重量和不超过容量V的前提下,让背包中物品的价格之和最大,求最大价值。(1<=n<=20) 输入数据: 5 8 3 5 1 2 2 4 5 2 1 3 //5件物品,背包容量为8 //重量分别为3 5 1 2 2 //价值分别为4 5 2 1 3...原创 2019-02-13 20:21:13 · 1981 阅读 · 1 评论 -
【大整数运算】 大整数的存储 | 高精度加法 | 高精度减法
大整数,又称为高精度整数,其含义就是用基本数据类型无法存储其精度的整数。 (不严谨地说就是位数很多很多的数) 大整数的存储 用整型数组存储每一位数,如将整数1987存储到数组中,则有a[0]=7,a[1]=8,a[2]=9,a[3]=1。即整数的高位存储在数组的高位,整数的低位存储在数组的低位。因为在运算的时候,都是从低位到高位进行枚举,这样存储符合习惯。在用字符串读入的时候,需要另存...原创 2019-02-10 17:35:25 · 433 阅读 · 0 评论 -
【递归】Fibonacci数列 | 全排列 | n皇后问题
Fibonacci数列 斐波那契数列(Fibonacci sequence),指的是这样一个数列:1、1、2、3、5、8、13、21、34、... 它满足F(1)=1, F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*) //求解Fibonacci数列第n项 (从第0项开始) #include<stdio.h> int f(int n) {...原创 2019-02-03 20:44:23 · 340 阅读 · 0 评论 -
【排序算法】冒泡排序|选择排序|插入排序|sort函数|归并排序|快速排序
先上张别人总结的图 冒泡排序 O(N)~O(N2) 稳定(指的是相等数字的相对顺序不会改变) 第一趟最大的泡泡一定在最底端,以此类推。 最外层的循环指对n-1个元素进行操作。(n-1就够了其他元素都操作完了最后一个...原创 2019-02-09 11:49:50 · 316 阅读 · 0 评论