
算法
文章平均质量分 89
u012903992
这个作者很懒,什么都没留下…
展开
-
小白带你学---回溯算法(Back Tracking)
但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。返回上层调用(3号皇后),而3号也别无可去,继续回溯上层调用(2号),2号已然无路可去,继续回溯上层(1号),于是1号皇后改变位置如下,继续回溯。这就是回溯算法的精髓,虽然没有最终把问题解决,但是可以剧透一波,就是根据这个算法,最终能够把四位皇后放在4x4的棋盘里。有N件物品和一个容量为V的背包。第i件物品的价格(即体积,下同)是w[i],价值是c[i]。转载 2023-02-15 19:22:42 · 305 阅读 · 0 评论 -
哈希表(散列表)详解(包含哈希表处理冲突的方法)
哈希表(散列表)详解(包含哈希表处理冲突的方法)前面介绍了静态查找表以及动态查找表中的一些查找方法,其查找的过程都无法避免同查找表中的数据进行比较,查找算法的效率很大程度取决于同表中数据的查找次数。而本节所介绍的哈希表可以通过关键字直接找到数据的存储位置,不需要进行任何的比较,其查找的效率相较于前面所介绍的查找算法是更高的。哈希表的构建在初中的数学课本中学习过函数的相关知识,给定一个 x,通过一个数学公式,只需要将 x 的值带入公式就可以求出一个新的值 y。哈希表的建立同函数类似,把函数中的转载 2022-05-16 19:21:52 · 923 阅读 · 0 评论 -
数据结构和算法-图
数据结构之图的基本概念一 图的定义 定义:图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。 在图中需要注意的是: (1)线性表中我们把数据元素叫元素,树中将数据元素叫结点,在图中数据元素,我们则称之为顶点(Vertex)。 (2)线性表可以没有元素,称为空表;树中可以没有节点,称为空树;但是,在图中不允许没有顶点(有穷非空性)。 (3)线性表中的各元素是线性关系,树中的各元转载 2022-05-14 19:20:53 · 1922 阅读 · 0 评论 -
五大常用算法——分治法,动态规划,回溯法,分支界限法,贪心算法
分治算法一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)…… 任何一个可以用计算机求解的问题所需的计算时间都与其规模有关。问题的规模越小,越容易直接求解,解题所需的计算时间也越少。例如,对于n个元素的排序问题,...原创 2022-05-14 19:06:02 · 1438 阅读 · 0 评论 -
超详细十大经典排序算法总结(java代码)c或者cpp的也可以明白
原文:https://blog.youkuaiyun.com/weixin_41190227/article/details/866008210、排序算法说明0.1 排序的定义对一序列对象根据某个关键字进行排序。0.2 术语说明稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面;不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面;内排序:所有排序操作都在内存中完成;外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行;时间复杂度:...转载 2021-03-29 10:03:23 · 141 阅读 · 0 评论 -
十大经典排序算法
排序算法是《数据结构与算法》中最基本的算法之一。排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。用一张图概括:点击以下图片查看大图:关于时间复杂度平方阶 (O(n2)) 排序 各类简单排序:直接插入、直接选择和冒泡排序。线性对数阶 (O(nlog2n)) 排序 快速排序、堆原创 2020-09-01 20:37:26 · 124 阅读 · 0 评论 -
八种排序算法效率比较
转载:http://terence2008.info/archives/sorting_compare.html从刚上大一那会儿学的C语言开始,就已经接触到了不少排序算法,但当时都只是为了完成简单的排序任务而已,而且所给的数据也不够多,所以看不出各个排序算法间的执行效率的优劣。最近有个数据结构课程设计的实验,是有关于排序算法之间的效率比较,我就顺便把它放上来了,并对各个算法执行的效率时间做了柱形统计图表。此次实验主要测试了8种排序算法:插入排序、快速排序、冒泡排序、希尔排序、简单选择排序、堆排序、归.转载 2020-08-29 15:28:05 · 4159 阅读 · 0 评论 -
六种查找算法效率比较
转载:https://terence2008.info/archives/finding_compare.html接着上次的排序算法讨论,这次谈的是六种查找算法,分别是:顺序查找、折半查找、二叉树查找、索引查找、开地址哈希查找方法、拉链法哈希查找方法。 由于查找一个数的过程,无论运用哪种算法对于电脑来说速度都是非常快的,都在1ms之内,无法用计时函数测试出来。所以为了能够直观准确地表示出各个算法间的差异,此程序用了循环查找的方法,具体的思想是:先随机生成3000个数作为查找的数据源,再随机生成.转载 2020-08-29 15:35:10 · 12091 阅读 · 1 评论 -
这些算法可视化网站助你轻松学算法
无疑,数据结构与算法学习最大的难点之一就是如何在脑中形象化其抽象的逻辑步骤。而图像在很多时候能够大大帮助我们理解其对应的抽象化的东西,而如果这个图像还是我们自己一点点画出来的,那么无疑这个印象是最深刻的了。没错,今天给大家分享的就是算法可视化的网站。Data Structure Visualizations网站地址为:https://www.cs.usfca.edu/~galles/visualization/Algorithms.html目前已经有很多常用的数据结构与算法的可视化,例如常见原创 2020-06-24 09:11:34 · 678 阅读 · 0 评论 -
时间复杂度o(1), o(n), o(logn), o(nlogn)
1、时间复杂度o(1), o(n), o(logn), o(nlogn)。算法时间复杂度有的时候说o(1), o(n), o(logn), o(nlogn),这是算法的时空复杂度的表示。不仅仅用于表示时间复杂度,也用于表示空间复杂度。O后面的括号中有一个函数,指明某个算法的耗时/耗空间与数据增长量之间的关系。其中的n代表输入数据的量。 大O描述的是算法的运行时间和输入数据之间的关系。2、时间复杂度为O(1)。 是最低的时空复杂度了,也就是耗时/耗空间与输入数据大小无关,无论输入数据增..原创 2020-06-24 09:09:54 · 1090 阅读 · 0 评论 -
十大经典排序算法(动图演示)
0、算法概述0.1 算法分类十种常见排序算法可以分为两大类:比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。0.2 算法复杂度0.3 相关概念稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。 不稳定:如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 .原创 2020-06-24 09:06:50 · 302 阅读 · 0 评论 -
哈希算法
对于哈希算法,在我们平时的开发中,都是基本上拿来就用就行了,所以这节我们将重点放在如何使用,并不进行哈希算法的原理剖析和如何设计一个哈希算法的讲解.什么是哈希算法?将任意长度的二进制值串映射为固定长度的二进制值串,这个映射的规则就是哈希算法,而通过原始数据映射之后得到的二进制值串就是哈希值(散列值).一个优秀的哈希算法需要满足:从哈希值不能反向推导出原始数据(所以哈希算法也叫单向哈希算法); 对输入数据非常敏感,哪怕原始数据只修改了一个 Bit,最后得到的哈希值也大不相同; 散列冲突的概率要转载 2020-06-24 09:05:38 · 2904 阅读 · 0 评论 -
什么是哈希算法?
哈希算法的基本含义 哈希是密码学的基础,理解哈希是理解数字签名和加密通信等技术的必要前提。 哈希,英文是 hash ,本来意思是”切碎并搅拌“,有一种食物就叫 Hash ,就是把食材切碎并搅拌一下做成的。哈希函数的运算结果就是哈希值,通常简称为哈希。哈希函数有时候也翻译做散列函数。 根据维基百科的定义,哈希函数要做的事情是给一个任意大小的数据生成出一个固定长度的数据,作为它的映射。所谓映射就是一一对应。一个可靠的哈希算法要满足三点。...转载 2020-06-24 09:04:17 · 903 阅读 · 0 评论 -
十大编程算法助程序员走上高手之路
算法一:快速排序算法快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。快速排序使用分治法(Divide and conquer)策转载 2016-01-19 14:00:15 · 579 阅读 · 0 评论 -
编程面试的10大算法
以下是在编程面试中排名前10的算法相关的概念,我会通过一些简单的例子来阐述这些概念。由于完全掌握这些概念需要更多的努力,因此这份列表只是作为一个介绍。本文将从Java的角度看问题,包含下面的这些概念:1. 字符串2. 链表3. 树4. 图5. 排序6. 递归 vs. 迭代7. 动态规划8. 位操作9. 概率问题10. 排列组合转载 2013-12-10 19:22:22 · 1160 阅读 · 0 评论 -
数据挖掘领域十大经典算法初探
译者:July 二零一一年一月十五日-----------------------------------------参考文献:国际权威的学术组织ICDM,于06年12月年评选出的数据挖掘领域的十大经典算法:C4.5, k-Means, SVM, Apriori, EM, PageRank, AdaBoost, kNN, Naive Bayes, and CAR转载 2013-11-30 13:41:02 · 857 阅读 · 0 评论 -
编程面试的10大算法概念汇总
以下是在编程面试中排名前10的算法相关的概念,我会通过一些简单的例子来阐述这些概念。由于完全掌握这些概念需要更多的努力,因此这份列表只是作为一个介绍。本文将从Java的角度看问题,包含下面的这些概念:1. 字符串2. 链表3. 树4. 图5. 排序6. 递归 vs. 迭代7. 动态规划8. 位操作9. 概率问题10. 排列组合1. 字符串转载 2013-12-01 00:05:43 · 986 阅读 · 0 评论 -
细数二十世纪最伟大的10大算法
译者:July 二零一一年一月十日------------------------------------参考文献:The Best of the 20th Century: Editors Name Top 10 Algorithms。By Barry A. Cipra。地址:http://www.uta.edu/faculty/rcli/TopTen/topte转载 2013-11-30 13:25:24 · 1038 阅读 · 0 评论