首页
首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
数据结构与算法
Postkarte不想说话
创建于2024-12-18
订阅专栏
数据结构与算法
暂无订阅
共15篇文章
创建于2024-12-18
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
基数排序
原理概念 基数排序也成为桶排序 数据处理步骤 找出最长的数字,确定要处理的桶排序的次数(最长的数字代表要处理的次数) 依次由个位开始,把相应位数上的数字放入相应的序号的桶里面,完成后再按照桶的序号,依
堆排序
原理 以从小到大排序为示例,我们借助大根堆。 从第一个非叶子节点开始,把二叉树调整成一个大根堆, 即从第(n-1) / 2号元素开始到堆顶元素(0号位元素),进行下沉操作。 把堆顶元素和末尾元素进行交
二叉堆
#include <iostream> #include <functional> #include <string.h> #include <stdlib.h> #include <tim代码 测试
归并排序
说明 采用分治思想, 先进行序列划分,再进行元素的有序合并 时间空间复杂度 排序算法 平均时间复杂度 最好时间复杂度 最坏时间复杂度 空间复杂度 稳定性 归并排序 O($n\log_{2}{n}$)
快速排序
说明 是冒泡排序的升级 每次选择基准数,把小于基准数的放到基准数的左边,把大于基准数的放到基准数的右边,采用“分治思想”处理剩余的序列元素,直到整个序列变为有序序列。 算法效率提升 对于小段趋于有序的
希尔排序算法
说明 希尔排序是建立在插入排序的基础上的,是对插入排序的优化。首先对数据进行分组,再对分组先进行排序。分组都排好序后数据是趋于有序的。 时间空间复杂度 排序算法 平均时间复杂度 最好时间复杂度 最坏时
插入排序算法
时间空间复杂度 排序算法 平均时间复杂度 最好时间复杂度 最坏时间复杂度 空间复杂度 稳定性 插入排序 O(n^2) O(n) O(n^2) O(1) 稳定 代码 测试
选择排序
选择排序 特点: 每次在剩下的元素中选择值最小的元素,和当前元素进行交换 缺点: 相比于冒泡排序,交换的次数少了,但是比较的次数依然很多 代码 测试
冒泡排序
冒泡排序 特点:相邻元素两两比较,把较大的元素往下交换 缺点:数据交换的次数太多了,效率低 时间复杂度 排序算法 平均时间复杂度 最好时间复杂度 最坏时间复杂度 空间复杂度 冒泡排序 O(n^2) O
二分搜索算法
二分搜索算法:二分搜索算法,二分搜索算法的前提是有一个已经排序好的数组,非递归实现 测试 递归实现 测试
栈和队列结合的常见问题
问题一: 使用两个栈实现一个队列 思路: 假设我们使用的两个栈为S1和S2,其中S1主要是用来push数据的,当需要查看数据的时候,将S1中的数据取出放到S2中然后S2中的栈顶即使我们模拟的队列的队头
队列
环形队列 我们使用first和rear指向第一个元素,假设我们使用数组实现队列,长度为7,每当队列中添加新元素的时候rear指向(rear + 1) % 7,从队列取数据的时候(first + 1)
栈常见问题
问题一: 有效的括号 问题描述 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须
栈
顺序栈 代码 测试 代码 测试结果 链式栈 我们使用链表的头插和头删来创建链式栈 代码 测试 代码 测试结果
双向链表与双向循环链表
双向链表与双向循环链表,双向链表与双向循环链表,双向链表 代码 测试 测试输出结果 双向循环链表 代码 测试 测试输出结果