算法与数据结构
文章平均质量分 60
学习笔记
许她年岁
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
定时器-C++ Linux
时间轮原创 2022-10-10 11:05:58 · 721 阅读 · 0 评论 -
数据结构使用细节记录
顺序查找使用数组构建顺序表时,设置“哨兵”以提高查找效率。《数据结构》清华大学版.P217这个改进能使顺序查找在length>=1000时,进行一次查找所需的平均时间几乎减少一半int Search(SSTable ST,KeyType key){ ST.elem[0].key=key; for(i=ST.length;!Equal(ST.elem[i].key,key);i--); return i;}ST.elem[0]赋 key 值,起监视哨作用,省去原创 2021-11-06 14:36:31 · 255 阅读 · 0 评论 -
哈希表(散列表)
哈希表(散列表)原创 2021-08-10 21:27:27 · 276 阅读 · 0 评论 -
排序------冒插归选快希堆
《大话数据结构》目录冒泡排序插入排序归并排序选择排序快速排序希尔排序堆排序稳定性的意义如果只是简单的进行数字的排序,那么稳定性将毫无意义。如果排序的内容仅仅是一个复杂对象的某一个数字属性,那么稳定性依旧将毫无意义如果要排序的内容是一个复杂对象的多个数字属性,但是其原本的初始顺序毫无意义,那么稳定性依旧将毫无意义。除非要排序的内容是一个复杂对象的多个数字属性,且其原本的初始顺序存在意义,那么我们需要在二次排序的基础上保持原有排序的意义,才需要使用到稳定性的算法,例如要排序的内容是一组原本.原创 2020-12-09 14:45:14 · 349 阅读 · 0 评论 -
查找------二叉排序树
《大话数据结构》二叉排序树二叉排序树(Binary Sort Tree),又称为二叉查找树。它或者是一棵空树,或者是具有下列性质的二叉树。■若它的左子树不空,则左子树上所有结点的值均小于它的根结构的值;·■若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;■它的左、右子树也分别为二叉排序树。构造一棵二叉排序树的目的,其实并不是为了排序,而是为了提高查找和插入删除关键字的速度。不管怎么说,在一个有序数据集上的查找,速度总是要快于无序的数据集的,而二叉排序树这种非线性的结构,也有.原创 2020-12-04 16:33:58 · 216 阅读 · 0 评论 -
查找------顺序查找
《大话数据结构》折半查找折半查找(Binary Search)技术,又称为二分查找。它的前提是线性表中的记录必须是关键码有序(通常从小到大有序),线性表必须采用顺序存储。折半查找的基本思想是:在有序表中,取中间记录作为比较对象,若给定值与中间记录的关键字相等,则查找成功;若给定值小于中间记录的关键字,则在中间记录的左半区继续查找;若给定值大于中间记录的关键字,则在中间记录的右半区继续查找。不断重复上述过程,直到查找成功,或所有查找区域无记录,查找失败为止。因此最终我们折半算法的时间复杂度为O.原创 2020-11-30 14:55:53 · 194 阅读 · 0 评论 -
队列实现
链表queue.h#ifndef QUEUE#define QUEUE#include "stack.h"/* 队列类型 * front: 队头指针 * rear: 队尾指针 * insert: 入队 * delete: 出队 * first: 访问队头 * is_empty: 验空 * */typedef struct q{ node_t *front; node_t *rear; void (*insert)(node_type, struct.原创 2020-10-21 11:17:12 · 147 阅读 · 0 评论 -
栈实现
数组取自《C专家编程》#define MAXSIZE 100int top = -1;int stack[MAXSIZE];#define pop stack[top--]#define push(s) stack[++top] = s出栈入栈如此之简洁……链表struct listNode{ int val; listNode *next; listNode(int v):val(v),next(nullptr){}};listNode *.原创 2020-09-14 16:05:51 · 133 阅读 · 0 评论 -
二叉树------路径
求一棵二叉树从根到所有叶子的路径集合 struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; void path(TreeNode *root,vector<vector<int> > &buf,int i) { b.原创 2020-09-03 15:01:59 · 138 阅读 · 0 评论 -
二叉树-----遍历(递归)
前序 中序 后序 遍历/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */class Solution {public: /** * * @param root TreeNode类 the root of binary tree * @return int整型vector<vector<>>.原创 2020-09-02 15:58:50 · 144 阅读 · 0 评论 -
二叉树------创建
利用前序遍历结果和中序遍历结果创建一颗二叉树原理已知前序遍历序列和中序遍历序列,可以唯一确定一颗二叉树;已知后序遍历序列和中序遍历序列,可以唯一确定一颗二叉树;已知前序遍历序列和后序遍历序列,不能确定一颗二叉树;实现输入某二叉树的前序遍历和中序遍历的结果,(输入的前序遍历和中序遍历的结果中都不含重复的数字)输出该二叉树。/** * Definition for binary tree * struct TreeNode { * int val; * TreeN.原创 2020-09-02 14:42:54 · 305 阅读 · 0 评论
分享