算法
元气满满鸭
一枚小学酥
展开
-
排序算法--快速排序
一.快速排序的思想快速排序可以认为是冒泡排序的升级版,它最重要的思想是分而治之。比如我们有如上这样一段数字需要排序:第一步:随机选择一个数字,假设选择65第二步:通过算法,将所有小于65的数字放在65的左侧,将大于65的数字放在65的右侧第三步:递归的处理左边的数字(比如选择31来处理左侧),递归的处理右侧的数字(比如选择81来处理右侧的数字)最终:排序完成那么快速排序和冒泡排序的区别在哪里呢?在快速排序中,选择的65可以一次性的放在最正确的位置,之后不需要任何移动,即快速排序对数字的定位原创 2021-02-01 23:02:40 · 204 阅读 · 0 评论 -
排序算法--希尔排序
一.希尔排序的思路希尔排序主要通过对数据进行分组实现的排序根据设定的增量(gap)将数据分为gap个组(组数等于gap),再在每个分组中进行局部排序假如有数组有10个数据,第1个数据为黑色,增量为5。那么第二个为黑色的数据index=5,第3个数据为黑色的数据index = 10(不存在)。所以黑色的数据每组只有2个,10 / 2 = 5一共可分5组,即组数等于增量gap。排序之后,减小增量,继续分组,再次进行局部排序,直到增量gap=1为止。随后只需进行微调就可完成数组的排序二.原创 2021-01-29 19:22:08 · 161 阅读 · 0 评论 -
排序算法--插入排序
一.插入排序的思路插入排序思想的核心是局部有序比如在一个队列中的队员,我们选择其中一个作为被标记的队员这个被标记的队员左边的所有队员已经是局部有序的这意味着在队列中,有一部分人是按顺序排好的,另一部分还没有顺序从第一个元素开始,该元素可以认为是已经被排序取出下一个元素,在已经排序的元素序列中从后向前扫描如果该元素(已排序)大于新元素,将该元素移到下一位重复上一步骤,直到找到已排序的元素小于或者等于新元素的位置将新元素插入到该位置后,重复上面的步骤二.插入排序的代码ArrayList原创 2021-01-27 16:02:32 · 962 阅读 · 0 评论 -
排序算法--选择排序
一.选择排序的思路选定第一个索引位置,然后和后面的元素依次比较如果后面的元素,小于第一个元素的值,则交换位置经过一轮比较后,可以确定第一位置是最小的可以看出选择排序,第一轮会选出最小值,第二轮会选出第二小的值,直到最后二.选择排序的代码ArrayList.prototype.selectsort = function(){ var length = this.array.length //1.外层循环:从0位置开始取数据 for(var j = 0; j < length - 1原创 2021-01-26 20:28:18 · 746 阅读 · 0 评论 -
排序算法--冒泡排序
首先我们创建一个列表类,将要排序的元素放在一个数组中,便于后期插入和转化function ArrayList(){ //属性 this.array = [] //方法 //将数据可以插入到数组中的方法 ArrayList.prototype.insert = function(item){ this.array.push(item) } //toString方法 ArrayList.prototype.toString = function(){ return this.array原创 2021-01-25 22:50:16 · 1471 阅读 · 0 评论