算法
xlecho
一个热爱网络技术的靓仔
展开
-
算法篇-十大经典排序算法之基数排序
echo编辑整理,欢迎转载,转载请声明文章来源。欢迎添加echo微信(微信号:t2421499075) 交流学习。什么是基数排序基数排序和计数排序谐音,这里不要搞错了。但是这两种算法都有只能对整数排序的缺点。基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。动图演示声明图片来源:五分钟学算法Java代码实现public class Test {原创 2020-11-25 11:00:09 · 810 阅读 · 0 评论 -
算法篇-十大经典排序算法之桶排序
echo编辑整理,欢迎转载,转载请声明文章来源。欢迎添加echo微信(微信号:t2421499075) 交流学习。什么是桶排序首先说一下桶排序的桶是什么概念,这里的“桶”是一个区间范围,里面可以承载一个或多个元素。桶排序的第一步就是确定桶的个数和区间。具体的建立多少个桶、每个桶的区间范围是多少,有不同的方式,我们这里使用桶的数量等于原始数列的元素的数量(为什么等于数列的数量,后面会讲到)。除了最后的一个桶只包含最大值,其他的值分散在其他桶里。桶排序也是分配排序的一种,但其是基于比较排序的,这也是与基原创 2020-11-25 10:31:47 · 454 阅读 · 0 评论 -
算法篇-十大经典排序算法之计数排序
echo编辑整理,欢迎转载,转载请声明文章来源。欢迎添加echo微信(微信号:t2421499075) 交流学习。什么是计数排序计数排序是一个非基于比较的排序算法,该算法于1954年由 Harold H. Seward 提出。它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围),快于任何比较排序算法。 [1] 当然这是一种牺牲空间换取时间的做法,而且当O(k)>O(nlog(n))的时候其效率反而不如基于比较的排序(基于比较的排序的时间复杂度在理论上的下限是O原创 2020-11-25 10:11:47 · 386 阅读 · 0 评论 -
算法篇-十大经典排序算法之堆排序
echo编辑整理,欢迎转载,转载请声明文章来源。欢迎添加echo微信(微信号:t2421499075) 交流学习。什么是堆排序?堆排序(Heapsort),堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。动图演示[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zvwYmQB4-1605836982389)(www.runoob.com/wp-content原创 2020-11-20 09:50:11 · 550 阅读 · 0 评论 -
算法篇-十大经典排序算法之快速排序
echo编辑整理,欢迎转载,转载请声明文章来源。欢迎添加echo微信(微信号:t2421499075) 交流学习。什么快速排序?快速排序(Quicksort)是对冒泡排序的一种改进。快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。动图演示[外链图片转存失败,源站可能有防盗链机原创 2020-11-19 10:50:39 · 262 阅读 · 0 评论 -
算法篇-十大经典排序算法之归并排序
echo编辑整理,欢迎转载,转载请声明文章来源。欢迎添加echo微信(微信号:t2421499075) 交流学习。什么是归并排序?归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。动图演示声明图片来源菜鸟教程Java代码实现public class Test { public static void main(String[] args) { int[] ar原创 2020-11-18 14:50:14 · 339 阅读 · 0 评论 -
算法篇-十大经典排序算法之希尔排序
echo编辑整理,欢迎转载,转载请声明文章来源。欢迎添加echo微信(微信号:t2421499075) 交流学习。什么是希尔排序?希尔排序(Shell’s Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因 D.L.Shell 于 1959 年提出而得名。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增原创 2020-11-18 14:34:40 · 703 阅读 · 0 评论 -
算法篇-十大经典排序算法之插入排序
echo编辑整理,欢迎转载,转载请声明文章来源。欢迎添加echo微信(微信号:t2421499075) 交流学习。什么是插入排序?插入排序(inertionSort),插入排序的代码实现虽然没有冒泡排序和选择排序那么简单粗暴,但它的原理应该是最容易理解的了,因为只要打过扑克牌的人都应该能够秒懂。插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。动图演示声明图片来源于菜鸟教程Java代码实现public cl原创 2020-11-17 16:37:06 · 397 阅读 · 0 评论 -
算法篇-十大经典排序算法之选择性排序
echo编辑整理,欢迎转载,转载请声明文章来源。欢迎添加echo微信(微信号:t2421499075) 交流学习。什么是选择性排序?选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。动图演示[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-68o46v7Y-1605515534149)(www.runoob.com/wp-content/uploads/201原创 2020-11-16 16:32:42 · 496 阅读 · 0 评论 -
算法篇-十大经典排序算法之冒泡排序
echo编辑整理,欢迎转载,转载请声明文章来源。欢迎添加echo微信(微信号:t2421499075) 交流学习。什么是冒泡排序?冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。冒泡排序的名称是根据数据规则来的,我们可以在冒泡排序中看到,数据在不断的推移,最终数据原创 2020-11-16 10:12:42 · 364 阅读 · 0 评论 -
算法篇-数据结构
echo编辑整理,欢迎转载,转载请声明文章来源。欢迎添加echo微信(微信号:t2421499075) 交流学习。什么是数据结构数据结构(英语:data structure)是计算机中存储、组织数据的方式。数据结构是一种具有一定逻辑关系,在计算机中应用某种存储结构,并且封装了相应操作的数据元素集合。它包含三方面的内容,逻辑关系、存储关系及操作。不同种类的数据结构适合于不同种类的应用,而部分甚至专门用于特定的作业任务。例如,计算机网络依赖于路由表运作,B 树高度适用于数据库的封装。为什么要学习数据原创 2020-11-16 09:10:00 · 238 阅读 · 1 评论 -
算法篇-什么是时间复杂度、空间复杂度
echo编辑整理,欢迎转载,转载请声明文章来源。欢迎添加echo微信(微信号:t2421499075) 交流学习。转载自:数据结构与算法 - 时空复杂度分析一、为何需要分析算法复杂度挺多同学本科都学习过数据结构和算法这门课,但是有没有想过这门课到底是解决什么问题?科学家设计这些数据结构和算法是要干嘛?其实,最终的目的只有一个:让我们写的代码在计算机上运行的速度更快,使用的内存更省!*,可是如何才能知道我们写的代码使用多少运行时间和内存呢?这就需要分析算法时间复杂度和空间复杂度,只有学会分析这 2转载 2020-11-14 14:29:10 · 504 阅读 · 0 评论 -
算法篇-认识算法
echo编辑整理,欢迎转载,转载请声明文章来源。欢迎添加echo微信(微信号:t2421499075) 交流学习。很多人一听算法觉得这个东西离自己太远,觉得这是个特别高档的东西,也有些人认为算法是个天马行空的东西。总之一谈到算法很多人都觉得what?都很迷茫!这片文章带你解读算法!什么是算法?算法(algorithm):简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果算法的意义是什么?既然算法就是一种计算步骤或者计算方法,那么为什么还能给我们这么高端的感觉?存在的意义是啥?原创 2020-11-14 11:03:07 · 552 阅读 · 0 评论