算法
xyq_mxnx
这个作者很懒,什么都没留下…
展开
-
八大排序算法--堆排序
参考文章链接:https://www.cnblogs.com/skywang12345/p/3602162.html原理:指利用堆这种数据结构所设计的一种排序算法。 初始化堆:将数列a[1...n]构造成大(小)顶堆。 交换数据:将a[1]和a[n]交换,使a[n]是a[1...n]中的最大(小)值;然后将a[1...n-1]重新调整为大(小)顶堆。 接着,将a[1]和a[n-1]交换,使a[n-1]是a[1...n-1]中的最大(小)值;然后将a[1...n-2]重新调整为大(小)顶堆。 .原创 2021-08-27 15:45:18 · 124 阅读 · 1 评论 -
八大排序算法--基数排序
原理:将整数按位数切割成不同的数字,然后按每个位数分别比较。 将所有待比较数值统一为同样的数位长度,数位较短的数前面补零。 然后从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后, 数列就变成一个有序序列。代码如下:代码执行结果如图所示:复杂度:时间复杂度:O() 空间复杂度:O(n) 稳定性:稳定如果遇到相等的值不进行交换,那这种排序方式是稳定的排序方式。最后附上八大排序算法的时间、空间复杂度以及稳定性:...原创 2021-08-27 11:25:59 · 123 阅读 · 0 评论 -
八大排序算法--归并排序
原理:基本思想:分治(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)采用分治的方法,自上而下,每次取一半,最终得到的两个相邻元素各自形成数组,数组长度=1,自然有序,然后进行合并,得到长度为2的有序数组,再和同样相邻的长度为2的数组合并,得到长度为4的有序数组。 ……. 最终达到有序。代码如下:import java.util.Arrays;public class MergeSort原创 2021-08-27 09:36:12 · 96 阅读 · 0 评论 -
八大排序算法--希尔排序
原理:从小到大排序 设定一个步长gap(整型),将待排序序列分组,每一次进行组内排序,通过缩小步长到1,最后执行一次简单插入排序,因此也称为缩小增量排序。 设定gap初始值为待排序序列长度的一半gap = length / 2,且后续gap = gap/2。 对以gap分组的序列进行插入排序。代码如下:import java.util.Arrays;public class ShellSort { public static void main(String[] args)原创 2021-08-26 20:44:22 · 87 阅读 · 0 评论 -
八大排序算法--插入排序
原理:原创 2021-08-26 11:32:34 · 77 阅读 · 0 评论 -
八大排序算法--快速排序
原理:从小到大排序 第一趟:选择一个基准元素(有的是第一个元素,有的会随机生成一个),定义两个游标(一般是int类型),一个在第一个元素,一个在最后一个元素。 然后遍历无序序列,右边游标先走,若是右边游标对应的元素不小于基准元素,就将右边游标减一,直到出现比基准元素小的数,交换两个游标对应的元素。交换之后,换成左边游标走,若是左边游标对应的元素不大于基准元素,就将左边游标加一,直到出现比基准元素大的数,交换两个游标对应的元素。交换之后,换成右边游标接着走 ...... 如此反复,直到左边游标等于右边原创 2021-08-25 21:27:26 · 89 阅读 · 0 评论 -
八大排序算法--选择排序
原理:从小到大排序 第一次遍历:记录最小值的下标,和第一个元素进行比较,如果小于第一个元素就与其交换,交换后的第一个元素就是最小的数。 第二次遍历:记录剩下元素中最小值的下标,和第二个元素进行比较,如果小于第二个元素就与其交换,交换后第二个元素是第二小的数。 ...... 重复上述步骤n-1次,最终得到一个有序序列。代码如下:import java.util.Arrays;public class SelectSort { public static void main.原创 2021-08-25 17:52:06 · 113 阅读 · 0 评论 -
八大排序算法--冒泡排序
冒泡排序,类似于水中冒泡,较大的数沉下去,较小的数慢慢冒起来,假设从小到大,即为较大的数慢慢往后排,较小的数慢慢往前排。原理:比较相邻的两个数,将较大的数放在前边,较小的数放在后边。 第一趟:第1个数和第2个数一对,比较大小,将较大的数放在前边,较小的数放在后边;随后第2个数和第3个数比较,将较大的数放在前边,较小的数放在后边...... 这样直到倒数第2个数和最后1个数比较,将最大的数移动到最后一位。 第二趟:将第二大的数移动至倒数第二位。 ...... 继续上述步骤,共需比较n-1趟。.原创 2021-08-25 16:45:36 · 119 阅读 · 0 评论