
算法与数据结构
文章平均质量分 88
二狗家有矿
这个作者很懒,什么都没留下…
展开
-
【必备算法】排序:图解十大排序算法及Java实现(详细)
十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。 注:这里说的整体上不是通过比较实现,但局部还是要经过比较或者调用比较排序算法 下面我们就按照时间复杂度的分成三部分进行图解(下面的动图取自这篇文章),并给出相应Java代码示例…1.O(n²)转载 2021-03-09 23:41:48 · 205 阅读 · 0 评论 -
面试题:面试高频出现的 leetcode 算法题集(重中之重)
最新进度请查看:https://github.com/gaoshengnan/LeetCode以下列出面试高频出现,以及一些非常经典重要的算法题:实战题目 - Array 题号 难度 题目链接 答案链接 是否完成 11 中等 盛最多水的容器 ❎ 26 简单 删除排序数组中重复项 remove Duplicates from sorted array ✅ .转载 2021-03-09 09:54:19 · 365 阅读 · 0 评论 -
排序算法 之 归并排序
原文地址http://www.cnblogs.com/liukemng/p/3721125.html归并排序也是基于分治思想的一种排序算法,是通过对两个或两个以上的有序序列合并来实现的,对两个序列合并的叫两路归并,对两个以上序列合并的叫多路归并。归并排序的时间复杂度也为O(N*logN)。下面来看一下两路归并的实现:基本思想:归并排序时先找出序列的中间元素把序列分解为两个子序列转载 2017-02-08 10:45:29 · 264 阅读 · 0 评论 -
排序算法 之 效率测试
原文地址http://www.cnblogs.com/liukemng/p/3724099.html前面我们写了常见的几种排序算法,并分析了各种算法的实现思想,及时间复杂度等情况,但由于只是分析,木有实际的数据做对比测试,所以对各个算法的效率也没有一个明确的概念,下面我们就通过具体的测试来看看同算法之间的效率差距。声明11个长度为100的元素取值范围为0到1000的序列转载 2017-02-08 10:47:49 · 302 阅读 · 0 评论 -
排序算法 之 桶排序
原文地址http://www.cnblogs.com/liukemng/p/3724051.html桶排序是一种效率很高的排序算法,它的时间复杂度为O(n),但桶排序有一定的限制,只有当待排序序列的元素为0到某一确定取值范围的整数时才适用,典型的例子比如成绩的排序等。算法思想:设待排序序列的元素取值范围为0到m,则我们新建一个大小为m+1的临时数组并把初始值都设为0,遍转载 2017-02-08 10:47:07 · 226 阅读 · 0 评论 -
排序算法 之 希尔排序
原文地址http://www.cnblogs.com/liukemng/p/3723976.html希尔排序是由D.L.Shell于1959年提出的,所以称为希尔排序。希尔排序又称缩小增量排序,是插入排序的一种改进。基本思想:希尔排序是基于插入排序的以下特点:待排序的序列元素数量越少排序速度越快;待排序序列的元素基本有序时排序速度越快;基于以上思想将待排序序列分为多个子序列分别转载 2017-02-08 10:46:25 · 251 阅读 · 0 评论 -
排序算法 之 快速排序
原文地址http://www.cnblogs.com/liukemng/p/3721066.html快速排序是基于分治思想的一种排序算法,就像该方法的名字一样,速度比较快,所以叫做快速排序;它的平均时间复杂度为O(N*logN),最坏时间复杂度为O(n²)。快速排序也有很多优化的版本,比如在排序时基数的选择等等…下面就说一下一般的快速排序的实现。基本思想:快速排序的基本转载 2017-02-08 10:44:26 · 275 阅读 · 0 评论 -
算法设计 之 递推法
原文地址http://www.cnblogs.com/liukemng/p/3719385.html递推法就是根据已知条件,分析推导出问题中的联系,然后一步一步进行推倒直至得到结果。根据具体问题我们需要选择是正推还是逆推来解决问题。 下面先举一个递推中的经典例子,就是求兔子数量的问题:现有一只一个月大的兔子,已知当兔子在第三个月大时每月就可以生下一只小兔转载 2017-02-08 10:43:15 · 659 阅读 · 0 评论 -
排序算法 之 插入排序
原文地址 http://www.cnblogs.com/liukemng/p/3716164.html本次介绍排序算法中的插入排序。 1.直接插入排序:基本思想:直接插入排序也需要对待排序的序列在外层进行n-1次遍历,每次遍历时只把本次遍历次数处的元素和该元素之前的元素进行比较,来决定插入位置,并把从插入位置开始到该元素之前的所有元素后移,使从序列开始到转载 2017-02-08 10:42:11 · 299 阅读 · 0 评论 -
排序算法 之 直接选择排序
原文地址http://www.cnblogs.com/liukemng/p/3715944.html上一篇我们记录了冒泡排序算法的实现,这次我们来看直接选择排序是如何实现的。 1.直接选择排序:基本思想:直接选择排序也是对被排序的序列进行n-1次遍历,与冒泡排序不同的是,它并不对本次遍历序列内的元素两两进行比较并根据比较的结果来决定是否交换,而是找出本次转载 2017-02-08 10:41:26 · 198 阅读 · 0 评论 -
排序算法 之 冒泡排序
原文地址http://www.cnblogs.com/liukemng/p/3715925.html之前看到一个题目,大概是:有一个长度为n的数组,数组内的元素取值范围为0到m,且不相等,要求元素经过n次移动后使数组有序(即算法的复杂度为O(n))。看到题目后想了快速排序和归并排序发现并不能满足题目要求,直到有次看书又看到了桶排序然后豁然开朗,所以决定把这些排序算法再写一遍,加深记忆。转载 2017-02-08 10:40:13 · 330 阅读 · 0 评论