
数据结构
文章平均质量分 53
Cichard
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构--一些简单的查找算法
查找 线性结构 顺序查找 折半查找 分块查找 树形结构 二叉排序树 二叉平衡树 B树,B+树 散列结构 散列表–性能分析,冲突处理 基本概念 查找为在数据集合中寻找满足某种条件的数据元素的过程,有查找失败和查找成功之分 查找表 用于查找的数据集合称为查找表 静态查找表,无需动态的修改查找表,只涉及检索和查找的操作方式,有顺序查找、折半查找、散列查找等 动态查找表,相比于静态查找表多了可以动态的插入和删除的操作,有二叉排序树、散列查找等 平均查找长度 简称ASL,一次的查找长度为需要比较的关原创 2021-10-14 19:43:24 · 509 阅读 · 0 评论 -
数据结构--归并排序
归并排序 主要是二路归并排序,其他多路归并同理 思想:“归并”的含义即是将两个或两个以上的有序序列整合成一个新的有序序列。例如,将待排的序列长度为n,将其视为n个长度为1的有序序列,然后两两合并,得到(n+1)/2个长度为2或1的有序序列,然后再进行两两归并,依次重复,最后得到一个长度为n的有序序列,这种称为二路归并。多路归并即多个序列合并成一个序列,本质上的思想是一样的。 实现代码 void Merge(ElemType A[], int l, int mid, int r){ for(int k原创 2021-10-14 19:42:20 · 325 阅读 · 0 评论 -
数据结构--堆排序
堆排序 思路:首先把一维数组视为一棵完全二叉树,这样才有接下来的的一系列操作和默认的定义 序列满足如下条件 1、L[i]>=L[2i]&&L[i]>=L[2i+1] (大根堆)或者 2、L[i]<=L[2i]&&L[i]<=L[2i+1] (小根堆) 以下只讨论大根堆的情况,小根堆同理 大根堆:任何一个非叶子节点的值都不小于其左右孩子的值,即父亲大孩子小 根节点即为最大的元素 构造 大根堆的排序中的关键操作就是把无序的序列调整成堆 建立大根堆原创 2021-10-14 19:41:53 · 146 阅读 · 0 评论 -
数据结构---一些简单的排序算法
排序算法 本博客排序顺序默认从小到大,非降序,数组如无特殊说明则从下标1开始到下标n 插入排序 直接插入排序 插入排序顾名思义,插入,排序, 先将前i-1个序列作为一个顺序序列,然后把第i个元素插入这个序列中,得到一个长度为i的序列 同时这种做法,因为是从后往前插入,故得到的是稳定排序 故整体时间复杂度为O(n^2),空间复杂度为O(1), 最好的情况为O(n),即元素基本有序,不需要插入太多,即for循环里面的for没怎么用过 具体代码实现如下: void Direct_insert_sort(E原创 2021-05-30 21:48:41 · 129 阅读 · 0 评论 -
数据结构--链表 带头节点的各项操作
完整代码如下,全部手打,如有错误,还望斧正 #include<bits/stdc++.h> using namespace std; #define ElemType int /* 链表操作,带头节点的链表 */ typedef struct LNode { ElemType data; struct LNode *next; }LNode, *LinkList; //LiskList相当于LNode*,只是为了表达是一个是节点一个是链表的差别 /* 初始化操作,带头节点 */ bo原创 2021-04-10 15:29:07 · 146 阅读 · 0 评论