数据结构与算法
Emma-Zhang
这个作者很懒,什么都没留下…
展开
-
数据结构(10)二叉排序树和平衡二叉树的介绍与代码实现(java)
二叉查找树二叉查找树,又称为二叉排序树、二叉搜索树;使一颗二叉树成为二叉查找树的性质是,对于树中的每一个结点X,它的左子树中所有项的值小于X中的项(注意:是左子树中所有项,而不仅仅是左子树),而它右子树中所有项的值都大于X。注意:空树就是一颗二叉查找树。构造二叉查找树import java.io.Serializable;/** * @author Emma * @create 20...原创 2020-04-05 00:06:47 · 564 阅读 · 0 评论 -
递归思想与斐波那契数列的优化
文章目录菲波那切数列的实现实现方法一:(简单递归写法)优化1:尾递归优化2:非递归循环写法递归思想如何设计递归算法菲波那切数列的实现斐波那切数列:1 1 2 3 5 8 13 21 …定义:实现方法一:(简单递归写法)#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>...原创 2019-08-20 17:28:02 · 473 阅读 · 0 评论 -
冒泡排序及其优化
冒泡排序第一版void bubble_sort1(int *arr,int sz){ int i = 0; int j = 0; for (j = 0; j < sz-1; j++) { //循环几趟 for (i = 0; i < sz - 1 - j; i++) { //每一趟循环几次 if (arr[i] > arr[i + 1]) { in...原创 2019-06-06 18:13:59 · 298 阅读 · 0 评论 -
数据结构(12)八种排序算法的介绍与代码实现(java)
点击印象笔记链接,收获快乐原创 2020-03-24 13:55:16 · 544 阅读 · 0 评论 -
数据结构(11)堆(优先队列)的原理与代码实现
堆(优先队列)堆的介绍在说到堆之前一定要先说一下优先队列,我们都知道队列是一种特殊的线性表,它允许在一端插入在另一端删除(先进先出),而优先队列是带有优先级的队列,优先队列把进入队列中的元素分优先级,出队列时首先选择优先级最高的元素出队列,对于优先级相同的元素则按照先进先出的原则出队列。优先队列在生活中有许多的应用。实现优先队列,可以用链表、二叉查找树、二叉堆,其中二叉堆对于优先队列的实现是...原创 2020-03-23 14:56:14 · 342 阅读 · 0 评论 -
数据结构(10)广义表的介绍与代码实现(c语言)
概念广义表是线性表的推广。广义表GL = (a1,a2,a3…,an),如果ai是单个数据元素,则称ai是广义表的原子;如果ai也是一个广义表,则称ai是广义表的子表。在广义表中要求各原子具有相同的类型,但允许各子表具有不同的结构。举一个广义表的例子:D=((a,b), ( c), d, ((e,f),g)),这个广义表D有4个元素,其中4表示广义表的长度。D中所包含括号的最大层数称为广义表的...原创 2019-08-20 18:39:37 · 6316 阅读 · 8 评论 -
数据结构(9)哈夫曼树的介绍与代码实现(java)
今天继续二叉树,今天讲讲哈夫曼树(Huffman Tree)。文章目录Huffman TreeHuffman Tree定义: Huffman Tree也是一种特殊的二叉树,这种树的所有叶子结点都带有权值,从中构造出带权路径长度最短的二叉树,即Huffman Tree。所谓路径是指:在一棵二叉树中,定义从A结点到B结点所经过的分支序列为从A结点到B结点的路径 定义从A结点到B结点所经过的...原创 2019-08-26 17:56:17 · 353 阅读 · 0 评论 -
数据结构(8)线索二叉树的介绍以及代码实现
这篇文章我们接着讲二叉树。文章目录1. 二叉树遍历--先序遍历、中序遍历、后序遍历和层次遍历1. 先序遍历:ABDEGHCF2. 中序遍历:DBGEHAFC3. 后序遍历:DGHEBFCA4. 层次遍历:ABCDEFGH2. 线索二叉树的定义3. 二叉树的线索化1. 二叉树的线索化代码实现4. 线索二叉树的基本运算1. 二叉树遍历–先序遍历、中序遍历、后序遍历和层次遍历所谓二叉树的遍历,是指...原创 2019-08-24 13:15:52 · 308 阅读 · 0 评论 -
数据结构(7)二叉树的介绍以及代码实现
文章目录1. 树树的相关概念树的存储结构2. 二叉树满二叉树&完全二叉树二叉树性质二叉树的存储结构二叉树的基本操作3. 堆树形结构的概念:结点间具有层次关系,每一层的一个结点能且只能和上一层的一个结点相关,但同时可以和下一层的多个结点相关,称为“一对多”关系。常见树形结构有树、堆。1. 树树的定义:树是递归定义的,树是由N(≥0)个结点构成的集合。当n=0时,称为空树;当n>1...原创 2019-08-22 22:03:55 · 509 阅读 · 0 评论 -
数据结构(6)队列的介绍与代码实现(c)
更多数据结构的实现文章目录队列的分类:顺序队列循环队列 (环形队列)循环队列的代码实现链式队列链式队列的代码实现优先级队列队列的应用队列是一种运算受限的线性表,在队列上,插入限定在某一端进行,删除限定在另一端进行。允许插入的一端称为队尾,允许删除的一端称为队头。新插入的结点只能添加到队尾,被删除的只能是排在队头的结点。进行插入操作的一端称为队尾(入队列)进行删除操作的一端称为队头(出队...原创 2019-08-19 22:47:31 · 821 阅读 · 0 评论 -
数据结构(5)栈的介绍与代码实现(c语言)
栈:一种特殊的线性表,它的插入和删除元素操作其只允许在线性表固定的一端进行。允许进行数据操作的一端称为栈顶,另一端称为栈底。处于栈顶位置的数据元素成为栈顶元素不含任何元素的栈称为空栈栈又称为后进先出的线性表和线性表类似,栈也有两种存储结构:顺序存储结构和链式存储结构。顺序栈通常由一个一维数组和一个记录栈顶元素位置的变量组成。习惯上将栈底放在数组下标小的那端。顺序栈所有的操作时...原创 2019-08-19 16:12:06 · 961 阅读 · 0 评论 -
数据结构(4)链表的介绍与代码实现(c语言)
本文实现语言:c语言我们都知道线性表根据底层存储方式的不同,分为下面几类。其中在链式存储结构中,以单链表(不带头节点,不循环)和双链表(带头节点,循环)最为重要。本文主要实现单链表的增,删,插,改等功能。什么情况下传二级指针?(看是否要通过形参改变实参:比如说查找,不改变链表结构,用一级指针;如果是头插,PHead已经改变,得用二级指针)代码:#define _CRT_SECURE_N...原创 2019-08-18 00:32:06 · 267 阅读 · 0 评论 -
数据结构(3)线性表的介绍与代码实现(C语言)
本文实现语言:c语言我们都知道线性表根据底层存储方式的不同,分为下面几类,本文主要用静态数组实现静态顺序表的增,删,插,改等功能。代码:#define _CRT_SECURE_NO_WARNINGS 1//------------------------------------------SeqList.h----------------------------------------...原创 2019-08-17 08:18:12 · 353 阅读 · 0 评论 -
数据结构(2)时间复杂度和空间复杂度
时间复杂度–函数执行时的基本操作次数 求解过程1.先找数学表达式(嵌套循环为乘法),并代入O( )中 2.加法中的常数用1取代 3.只保留表达式中最高阶 4.把最高阶系数变为1注意: 在实际中我们通常情况考虑的是算法的最坏情况;空间复杂度–算法的储存空间需求 注意 一个程序在运行时除了需要寄存本身所用代码,常数,变量和输入数据的储存空间外,也需要一些对数据进行...原创 2018-07-08 22:03:59 · 202 阅读 · 0 评论 -
数据结构(1)数据结构的分类
首先声明本篇文章参考链接文章目录1.数据结构的一些常见概念1.1 数据的物理结构数组和链表的区别:1.2 数组的逻辑结构1、线性数据结构:线性表、栈、队列)1.1 线性表1) 顺序表:采用顺序存储结构表示的线性表2) 链表:采用链式存储结构表示的线性表1.2 栈、队列1.2.1 栈1.2.2 队列2、树形结构:树、堆2.1 树2.1.1 二叉树2.2 堆3. 图形结构1.数据结构的一些常见概念...原创 2019-08-18 22:33:25 · 668 阅读 · 0 评论