数据结构_最小优先级队列

数据结构_最小优先级队列

概述 优先级队列是一种用来维护由一组元素构成集合S的数据结构,其中每个元素都有一个相关的值,称之为关键字。一个最小优先级队列支持以下操作: insert(S,x):将元素x插入到集合S中 min(S):返回S中具有最小关键字的元素 extract_min(S):去掉并返回S中具有...

排序_快速排序

排序_快速排序

bingliaolong Algorithm 5年前 25 0

简述 快速排序在每一轮挑选一个基准元素,并让其他比它大的元素移到数列一边,比它小的元素移到数列的另一边,从而把数列拆解成两个部分。 快速排序是从冒泡排序演变而来的。 快速排序也属于交换排序,通过元素之间的比较和交换位置来达到排序的目的。 为什么快速排序比较快? 因为它使用了分治法...

贪心算法

贪心算法

概述 贪心算法(Greedy Algorithm)是一种构造性算法,用于解决最优化问题 其核心思想是在每一步选择中,都采取当前状态下最优的选择,期望通过一系列局部最优的选择达到全局最优 贪心算法在许多实际问题中非常有效,但并不是所有问题都适用 特点 局部最优选择 每一步都选择当前...

匹配_KMP模式匹配算法:二

匹配_KMP模式匹配算法:二

预处理操作 参数 iterP_begin:模式序列P的起始迭代器 iterP_end:模式序列P的终止迭代器 解析 初始化 pai[1] = 0,k = 0 遍历(q从:2->m) 从2开始,因为Pk必须是Pm的真子集。 条件:k > 0 && p[k...

排序_冒泡排序

排序_冒泡排序

bingliaolong Algorithm 5年前 14 0

简述 冒泡排序通过反复遍历要排序的列表,比较每对相邻项,并以升序或降序的方式交换它们。重复操作列表,知道不需要交换为止。 复杂度 名称 最好 平均 最差 空间 稳定性 冒泡排序 n n2 n2 1 是 理解 冒泡排序,有n个数字,就要进行n次大循环 每次大循环,会找到所有数里面的...

动态规划相关

动态规划相关

概述 动态规划(Dynamic Programming,简称 DP)是一种通过分解问题来解决复杂问题的算法技术,特别适用于具有最优子结构性质的问题,即问题的最优解可以由其子问题的最优解构建而成 动态规划的核心思想是将问题分解成更小的子问题,并保存这些子问题的解,避免重复计算,从而...

匹配_KMP模式匹配算法:一

匹配_KMP模式匹配算法:一

模式匹配 对子串的定位操作通常被称为串的模式匹配 简单的说,就是对主串S的每一个字符作为子串开头,与要匹配的字符串T进行匹配,对主串S做大循环,每个字符开头做T的长度的小循环,直到匹配成功或者全部遍历完成为止 朴素的模式匹配算法 KMP模式匹配算法 S串:abcdefgab T串...

一些变量值交换的方法

一些变量值交换的方法

第三个变量 实现 优点 简单易懂,逻辑清晰 缺点 需要额外的空间来存储临时变量 异或运算 实现 优点 不需要额外的空间 运算只使用基本的逻辑运算,适用于底层硬件编程 缺点 对大多数程序员来说,这种方法不如使用第三个变量的方式直观,容易引起误解 如果 a 和 b 是同一个变量,这种...

排序_基数排序

排序_基数排序

简述 基数排序思想,假设对数组A[p...r]排序,其中数组中所有元素都为正整数,并且不超过RADIXWITH位(有模板的RADIXWITH参数指定): 首先对A中所有元素按照个位数大小进行排序(原地的) 再对A中所有元素按照个十数大小进行排序(原地的) 一直到最后按照A中所有元...

扫一扫二维码分享