数据结构
文章平均质量分 53
Cichard
这个作者很懒,什么都没留下…
展开
-
数据结构--一些简单的查找算法
查找线性结构顺序查找折半查找分块查找树形结构二叉排序树二叉平衡树B树,B+树散列结构散列表–性能分析,冲突处理基本概念查找为在数据集合中寻找满足某种条件的数据元素的过程,有查找失败和查找成功之分查找表用于查找的数据集合称为查找表静态查找表,无需动态的修改查找表,只涉及检索和查找的操作方式,有顺序查找、折半查找、散列查找等动态查找表,相比于静态查找表多了可以动态的插入和删除的操作,有二叉排序树、散列查找等平均查找长度简称ASL,一次的查找长度为需要比较的关原创 2021-10-14 19:43:24 · 444 阅读 · 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 · 262 阅读 · 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 · 112 阅读 · 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 · 94 阅读 · 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 · 119 阅读 · 0 评论