
算法
文章平均质量分 67
一笑程序猴
工欲善其事,必先利其器
展开
-
经典排序算法之快速排序(二分法排序)
前言前面两篇文章我们已经分析了经典排序算法中的冒泡排序和插入排序的思路,以及冒泡排序的优化方案。接下来我们将继续学习一个新的排序算法 - 快速排序(二分法排序)。思路分析所谓的快速排序其实就是利用二分法加递归的原理,每次取出数组中的中间位置的值作为参照,然后再借助两个额外的数组。遍历原数组中的每个元素跟中间值(参照值)进行比较,把小于中间值的元素放在一个新数组中,相反把大于中间值的元素放在另一个新的数组中。这样一来其中一个新数组中的所有元素肯定都是小于中间值的,而另外一个新数组中的元素也必然都是原创 2021-09-27 15:43:29 · 11984 阅读 · 0 评论 -
经典排序算法之插入排序
前言前面我们已经学习了经典排序算法之一的冒泡排序。那么除了经典的冒泡排序还有很多其他的排序算法,今天我们就来学习一个新的排序 - 插入排序。从名字上看不难理解,其实就是以插入的方式进行排序,在讲数组的插排之前,我们先来看一个生活中比较常见的案例。相信扑克牌大家应该都不陌生,每当同学小聚或者逢年过节大家也都会玩上几把。那么在玩牌的时候一般都是将洗好的扑克牌放在桌上,然后每个人轮流去抓取。不知道大家是如何管理抓到手中的牌的,我的习惯是将抓在手中的牌按从小到大的顺序排好,当抓到新牌后先跟手里的牌进行比较,原创 2021-09-26 17:00:23 · 2141 阅读 · 0 评论 -
经典排序算法之冒泡排序的优化方案
前言在前面的文章经典排序算法之冒泡排序我们已经掌握了冒泡的原理和方法,但经过分析发现虽然结果是我们想要的,但却不是最优的冒泡排序,下面我们将结合前面文章中的示例进行一下冒泡的优化。优化方案及思路分析在我们的口诀中(n-1)轮循环是一种保底的情况,就是为了保证每两个相邻值都能得到比较,但是前面文章中的示例,其实在第四轮比较就已经得到了期望结果,而后面的两轮比较完全没有必要的。再假设一种更极端的情况,假如给定的数组就已经是一个有序数组了[1,4,7,8,10,12,21],那么按照口诀是不是依然还要进行原创 2021-09-26 15:17:39 · 2154 阅读 · 0 评论 -
经典排序算法之冒泡排序
前言最近在学习一些排序算法相关的知识,然后为了巩固知识,想把所学所想以文章的形式进行整理记录和输出。提到排序,想必大家都能想到冒泡排序,相信只要是程序员也应该都知道这个耳熟能详的经典算法了。虽然冒泡排序不是最优的排序方案,但绝对绝对称得上是经典。在我最初学习冒泡排序时其实并不懂得它的具体思路是什么,老师只是让我们记住了一个口诀:“外层循环 n - 1,内层循环 n - i - 1。其中n为数组的长度,i是外层循环的变量”。还别说这个口诀还真**的准,一套准对。就这么稀里糊涂的用了好几年,虽然每次都原创 2021-09-26 14:55:12 · 2292 阅读 · 0 评论