数据结构笔记
柯小诺
这个作者很懒,什么都没留下…
展开
-
树与二叉树概念
树树形结构是一类重要的非线性数据结构。树是以分支关系定义的层次结构1.树的定义:树是n(n>=0)个结点的有限集。2.结点:就是图的顶点。3.枝:就是图的边。4.根 :一颗树可以想象成从某一个顶点开始进行分枝,那么这个顶点就是“根”。一颗树的每一个节点都可以作为根。5.叶:在一颗树上选定根后,如节点0作为根。由根开始不断分枝,途中所有无法再分枝的节点成为叶。6.度:一个节点拥有的子树数称为节点的度。7.层/深度/高度 :在一颗树中选定根后,按照每个点离根的距离,可以将树中的点分为多个原创 2021-11-27 21:15:50 · 909 阅读 · 0 评论 -
堆排、快排
1.堆排小顶堆:父节点的值<孩子节点的值【从大到小】大顶堆:父节点的值>孩子节点的值【从小到大】如果需要升序排序,则需要大顶堆,则将去数据调整为大顶堆,再将根节点和最后一个已知节点交换,然后重复此操作,直到剩余一个节点。时间复杂度:O(nlog2 n) 空间复杂度:O(1)稳定性:不稳定【存在跳跃交换】//这个函数:调整一次大顶堆 时间复杂度O(log2n)void AdjustHeap(int arr[], int start, int end){ assert(ar原创 2021-11-27 19:32:20 · 362 阅读 · 0 评论 -
基数、二路归并排序
1.基数排序将所有数据从左向右,依次按照低位优先,全部进入到桶内,再从桶内取出时间复杂度:O(dn) 空间复杂度:O(dn)稳定性:稳定void Get_Figure_Max(int *arr,int len){ int max = arr[0]; for(int i=1; i<len; i++) { if(arr[i] > max) { max = arr[i]; } } int count=0; while(max!=0)原创 2021-11-12 16:23:59 · 871 阅读 · 0 评论 -
直接插入、希尔排序
1.直接插入排序:依次从待排序序列中取值,向已排序排序中放,保证再次完全有序,直到将待排序序列中所以值取完时间复杂度:O(n^2) 空间复杂度:O(1)稳定性:稳定int count = 0;void InsertSort(int arr[], int len){ int tmp = 0; int j;//j代表的是已排序序列中需要和tmp比较的值 for(int i=1; i<=len-1; i++)//i代表的是未排序序列中此次需要插入的值(变稳定) { t原创 2021-11-10 19:12:50 · 937 阅读 · 0 评论 -
冒泡、选择排序
1.冒泡排序两两比较,大的向后挪动时间复杂度O(n^2) 空间复杂度O(1)稳定性:稳定优缺点: 缺点:时间复杂度大 优点:实现简单 稳定void BubbleSort(int *arr, int len){ assert(arr!=NULL); for(int i=0; i<len-1; i++)//控制轮数 { for(int j=0; j<len-1-i; j++)//控制每一轮比较的次数 { if(arr[j] > arr[j+1])原创 2021-11-04 20:31:49 · 37 阅读 · 0 评论 -
字符串匹配
1.串:字符串,0个或多个字符序列字符串求长度 strlen字符串比大小 strcmp strncmp字符串连接 strcat字符串拷贝 strcpy字符串匹配 BF(brute force 暴力算法 朴素算法) KMP(对BF算法的优化)2.子串和真子串的区别? 真子串不包括自身 空串和空格串的区别? “” " "3.“abcd”" " “a” “b” “c” “d”“ab” “bc”原创 2021-11-04 17:37:01 · 192 阅读 · 0 评论 -
栈与队列(+题)
1.栈栈是限定仅在表尾进行插入或删除操作的线性表。(受到限制的线性表) 是一种先进后出,后进先出(LIFO)的数据结构对栈来说,表尾端有其特殊含义,称为栈顶,相应地,表头端称为栈底。不含元素的空表称为空栈。2.顺序栈struct Stack{ int *base;//栈底指针 int top;//既是元素个数,也是下一个插入元素的下标 //int* top;//指针—指针=个数 stacksize;};stack.h#pragma once//原创 2021-10-12 23:23:07 · 149 阅读 · 0 评论 -
线性表和一些题
1.线性表是最常用且最简单的一种数据结构。1>存在唯一的一个北城做“第一个”的数据元素;2>存在唯一的一个被称做“最后一个”的数据元素;3>除第一个之外,集合中的每个数据元素均只有一个前驱;4>除最后一个之外,集合中每个数据元素均只有一个后继。2.定长顺序表sqlist.h#pragma once//定长的顺序表结构体定义typedef struct Sqlist{ int arr[10];//数据域 int length;//有效数据节点的个数}Sql原创 2021-09-30 10:51:36 · 82 阅读 · 0 评论 -
数据结构基础概念和时间空间复杂程度
1.数据:是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。它是计算机加工的“原料”。2.数据元素:是数据的基本单位在计算机程序中通常作为一个整体进行考虑和处理。3.数据对象:是性质相同的数据元素的集合,是数据的一个子集。4.数据结构:是互相之间存在一种或多种特定关系的数据元素的集合。1>集合2>线性(现实生活中的排队)3>树形(学校架构,族谱)4>图形(交通网络,六度分割理论,网络拓扑)5.时间复杂度:执行语句与问题规模之原创 2021-09-10 20:20:03 · 71 阅读 · 0 评论