算法
一 路
不会就从不会到会
展开
-
排序算法之快速排序
基本介绍 快速排序是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对两部分数据分别进行快速排序,整个排序过程可以递归进行,以达到整个数据变成有序序列。 案例分析 要求将数组[-9,78,0,23,-567,70]从小到大进行排序。 假设我们取数组中间一个数为参照,如以0为参照,步骤如下: 初始化左右指针0,5,选择(0+5)/2=2的下标值为0为参照,左边放比0小的,右边放比0大的,黑色指针此时-9和0比较,原创 2020-12-28 10:55:38 · 235 阅读 · 0 评论 -
排序算法之希尔排序
基本介绍 希尔排序是希尔于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进后的高效版本,也称为缩小增量排序。 基本思想 在排序算法之插入排序中插入排序很循规蹈矩,不管数组分布是怎么样,都会一步一步的对元素进行比较,移动,插入;假设这种序列[1,2,3,4,5,0],数组末端的0要回到首位置很是费劲,比较和移动元素均需n-1次。而希尔排序在数组中采用跳跃式分组的策略,通过某个增量将数组元素划分为若干组,然后分组进行插入排序,随后逐步缩小增量,继续按组进行插入排序操作,直至增量为原创 2020-12-13 10:53:43 · 512 阅读 · 1 评论 -
排序算法之插入排序
基本介绍 插入排序是对一对序列以插入的方式寻找该元素的适当位置,以达到排序的目的。 基本思想 把n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次和有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。 案例分析 初始数据: [ 3, 1, -1, 2, 4] 将数组开始分为 {3} ,{1,-1,2,4},然后将1和3进行比较,3比1大,则将3插入1前面,一轮插入排序后,数组原创 2020-12-12 11:35:39 · 346 阅读 · 0 评论 -
排序算法之选择排序
基本介绍 选择排序是从一组数据中,按指定的规则选出某个元素,在按照规定交换位置后达到排序的目的; 排序思想 从头至尾扫描数组,找出最小的一个元素,和第一个元素交换,接着从剩下的元素中继续这种选择和交换方式,最终得到一个有序序列; 例子: 给定数组 [3,5, 6, 2, 4],要求按照从左到右、从小到大的顺序进行排序 分析思路: 选择排序一个需要进行数组大小-1轮排序;先假设当前数为最小数,然后和后面每一个数进行比较,如果发现有比当前最小数更小的数,就更新当前最小数和下标;当一轮数组遍历到最后时,就可以获取原创 2020-12-10 16:10:59 · 957 阅读 · 0 评论 -
排序算法之冒泡排序
基本思想 给定一个数组,这些元素将通过相互之间的比较,按照大小顺序一个一个地像气泡一样浮出水面。 实现思路 每一轮,从数组头部开始,每两个元素比较大小并进行交换,直到这一轮当中最大或最小的元素被放置在数组的尾部,然后不断地重复这个过程,直到所有元素都排好位置。其中,核心操作就是元素相互比较。 例子: 给定数组 [3,5, 6, 2, 4],要求按照从左到右、从小到大的顺序进行排序 思路:我们要使用循环遍历这个数组,从第一个值开始,每两个值去比较大小,如果第二个值比第一个值大,则进行交换,继续两两比较,直到数原创 2020-12-09 14:32:17 · 258 阅读 · 0 评论