数据结构
文章平均质量分 53
忽然之间bbc
fighting
展开
-
C__单链表的实现(增删查改)
SList.h #define _CRT_SECURE_NO_WARNINGS 1 #pragma once //用于保证头文件只被编译一次 #include <stdio.h> #include <malloc.h> typedef int SLDateType; typedef struct SListNode { SLDateType date; struct SListNode* next; }SListNode; void SListPrintf(SListN原创 2020-07-15 09:16:24 · 105 阅读 · 0 评论 -
时间复杂度与空间复杂度
#####时间复杂度与空间复杂度的概念 算法的时间复杂度反映了程序执行时间随着输入规模增长而增长的量级,能很好的反映出一个算法的优劣。 时间复杂度:评估执行程序所需要的时间。 空间复杂度:评估执行程序所需要的存储空间。 时间复杂度 一个算法所花费的时间与算法中语句的执行次数成正比,执行的次数多,即花费的时间也多。 ==T(n) = O( f(n) ) == (n表示数据规模) 算法复杂度从三种...原创 2018-11-27 12:00:11 · 335 阅读 · 1 评论 -
二叉树的建立和遍历
二叉树的建立及应用 二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”和“右子树”。 我们则需要掌握二叉树的一些基本操作和应用,如二叉树的构建、遍历和求节点个树。 讲这些之前我们先用一棵二叉树来讲解一下什么是前序遍历、中序遍历和后序遍历。 前序遍历指的就是:先访问根节点,再访问该节点的左孩子和右孩子。 中序遍历指的就是:先访问左孩子,再访问根节点,最后访问右孩子; 后序遍历指的...原创 2019-03-06 14:10:27 · 971 阅读 · 0 评论 -
排序算法
常见算法分类 十种常见排序算法一般分为以下几种: (1)非线性时间比较类排序:交换类排序(快速排序和冒泡排序)、插入类排序(简单插入排序和希尔排序)、选择类排序(简单选择排序和堆排序)、归并排序(二路归并排序和多路归并排序); (2)线性时间非比较类排序:计数排序、基数排序和桶排序。 交换排序 冒泡排序:对所有相邻记录的关键字值进行比效,如果是逆顺(a[j]>a[j+1]),则将其交换,最...原创 2019-03-06 16:34:51 · 145 阅读 · 0 评论 -
堆的实现
什么是堆? 堆通常可以被看作一棵树的的数组对象。通俗来说就是用一个数组来表示一棵完全二叉树。如下面的数组。 而堆存在的意义在哪里呢? 比如笔者上一篇博客排序算法(点这里呦)https://mp.csdn.net/postedit/88241718 里的堆排序算法,比如有名的top K问题(在一些很多的数据里,找到排名前几,后者后几的问题,在实际生活中有很广泛的应用) 首先,在学习堆之前我们还得有...原创 2019-03-13 16:18:23 · 132 阅读 · 0 评论 -
二叉搜索树
二叉搜索树,也叫做二叉排序树, 可以是一棵空树,或者是具有下列性质的二叉树: a.若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; b.若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; c.它的左、右子树也分别为二叉排序树。 例如下图就是一棵二叉搜索树,满足原创 2019-04-28 15:16:47 · 130 阅读 · 0 评论