朝花夕誓
七、高级排序---堆排序 七、高级排序---堆排序
一、堆堆一般指的是二叉堆,二叉堆是完全二叉树或者近似完全二叉树 每个节点的值都大于或等于其子节点的值,为最大堆;反之为最小堆。 堆排序是利用堆这种数据结构设计的排序算法,更准确的说,是利用堆的删除操作所设计的一种排序算法。 比如:删除堆顶元
2024-10-07
KMP算法 KMP算法
一、使用场景用于字符串匹配: 文本串:aabaabaaf 模式串:aabaaf 问:文本串是否包含模式串?如果包含,返回第一次出现的索引。 二、经典暴力匹配遍历文本串,将得到的每一个字符作为首字母与模式串进行比较。 需要遍历一次文本串和一次
2021-01-03
二分查找 二分查找
题目查找数组中值为1000的索引,[3,5,7,1000,1000,9999] 一、递归实现二分查找前提:数组必须有序 时间复杂度:O(log2n) 思路:先对比待查找的值和数组中间值,如果待查找值较大,则在继续中间值的右边查找;如果待查找
2020-12-27
动态规划 动态规划
一、动态规划算法介绍 核心思想:将大问题分成小问题,进而一步步获取最优解的处理算法 与分治法类似,先解决子问题,再从子问题的解中得到问题的解 与分治法不同的是,适合于动态规划的问题,分解后的子问题往往不是相互独立的(即下阶段求解是建立在上个
2020-12-25
贪心算法 贪心算法
一、题目(力扣455.分发饼干)假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j
2020-12-25
六、高级排序---快速排序 六、高级排序---快速排序
一、排序原理1.首先设定一个分界值,通过该分界值将数组分成左右两部分; 2.将大于或等于分界值的数据放到到数组右边,小于分界值的数据放到数组的左边。此时左边部分中各元素都小于或等于分界值,而右边部分中各元素都大于或等于分界值; 3.然后,左
2020-11-01
五、高级排序---归并排序 五、高级排序---归并排序
一、 排序原理 尽可能的一组数据拆分成两个元素相等的子组,并对每一个子组继续拆分,直到拆分后的每个子组的元素个数是1为止。 将相邻的两个子组进行合并成一个有序的大组; 不断的重复步骤2,直到最终只有一个组为止。 1. 运用分治思想 2.
2020-10-31
四、高级排序---希尔排序 四、高级排序---希尔排序
1. 引言 基础排序,包括冒泡排序,选择排序还有插入排序,并且对他们在最坏情况下的时间复杂度做了分析,发现都是O(N^2),而平方阶通过我们之前学习算法分析我们知道,随着输入规模的增大,时间成本将急剧上升,所以这些基本排序方法不能处理更大规
2020-10-30
二、简单排序---选择排序 二、简单排序---选择排序
1. 排序思路 每一次遍历的过程中,都假定第一个索引处的元素是最小值,和其他索引处的值依次进行比较,如果当前索引处的值大于其他某个索引处的值,则假定其他某个索引出的值为最小值,最后可以找到最小值所在的索引 交换第一个索引处和最小值所在的索
2020-10-29
三、简单排序---插入排序 三、简单排序---插入排序
1. 排序思路 把所有的元素分为两组,已经排序的和未排序的; 找到未排序的组中的第一个元素,向已经排序的组中进行插入; 倒叙遍历已经排序的元素,依次和待插入的元素进行比较,直到找到一个元素小于等于待插入元素,那么就把待插入元素放到这个位置,
2020-10-29
一、简单排序--冒泡排序 一、简单排序--冒泡排序
1.冒泡排序原理 比较相邻的元素。如果前一个元素比后一个元素大,就交换这两个元素的位置。 对每一对相邻元素做同样的工作,从开始第一对元素到结尾的最后一对元素。最终最后位置的元素就是最大值。 再次从开始到倒数第二个元素比较,确定第二大的值,之
2020-10-28