![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序算法
文章平均质量分 77
被惦记的猫
请叫我菜鸡。
展开
-
Java基础算法之堆排序(Heap Sort)
堆排序(Heap Sort)1、堆介绍2、算法介绍3、图解4、代码实现5、执行结果6、其他算法1、堆介绍大顶堆: 非叶子结点的数据要大于或等于其左,右子节点的数据小顶堆: 非叶子结点的数据要小于或等于其左,右子节点的数据2、算法介绍先从后面的非叶子结点从后向前将结点构建成一个大顶堆(小顶堆)。此时根节点就是最大的数据(最小的数据),然后将根节点与数组最后一位进行交换。交换后再从根节点开始构建堆(此时树的长度应该减一,因为最大的数已经确定了)。重复执行2-3步骤,直到数据有序。3、图解原创 2020-09-11 11:45:28 · 1368 阅读 · 2 评论 -
Java基础算法之快速排序(Quick Sort)
快速排序(Quick Sort)1、算法介绍(递归)2、举例演示3、图解4、代码实现5、执行结果6、其他排序1、算法介绍(递归)首先确认一个分界值(这里使用中间的数),然后通过分界值将数组分为左右两部分。使用左右指针进行遍历,左指针指向大于分界值的数据,右指针指向小于分界值的数据,然后左右指针进行交换数据,交换后左指针进行前移,右指针进行后移将小于分界值的数据放到分界值的左边,将大于分界值的数据放到分界值的右边。然后将左右两边各取一个分界值,同样将小于分界值的数据放到分界值的左边,大于分界值的数原创 2020-09-11 00:35:14 · 589 阅读 · 1 评论 -
Java基础算法之冒泡排序
冒泡排序(Bubble Sort)1. 算法介绍对原数组的各个数据,依次比较相邻数的大小。如果前面的数大于(小于)后面的数,经过一轮排序便将最大(最小)的数。循环1 - 2,步,总共需要循环数组长度减一次(每次循环都固定了最大数或者最小数的位置)。2. 举例演示原数组: [117, 101, 106, 155, 112]第一次排序后:[101, 106, 117, 112, 155]第二次排序后:[101, 106, 112, 117, 155] ==已经排好序=第三次原创 2020-09-07 11:04:47 · 924 阅读 · 1 评论 -
Java基础算法之选择排序
选择排序(Selection Sort)1、算法介绍2、举例演示(循环 n - 1 次)---- n 为数组长度3、图解4、代码实现5、运行结果1、算法介绍从原始的数组中选出最小的一个数据(如果当前位置为最小值则不进行交换),将其与数组第一个位置的数据进行交换。完成一次交换之后,第一个位置的数据便是最小值。固定了第一个位置之后,从剩下的 n - 1 个数据中选出其中最小的数据将其与第二个位置进行交换。完成二次交换之后,第二个位置的数据便是次小值。固定了第二个位置之后,从剩下的 n - 2 个数原创 2020-09-08 21:23:39 · 221 阅读 · 1 评论 -
Java基础算法之插入排序
插入排序(Insertion Sort)1、算法介绍2、举例演示3、图解4、代码实现5、运行结果1、算法介绍对前面的两个数据进行排序。将第三个数据与前面的数据进行比较,然后将第三个数据插入到合适位置(如果第三个数据大于第二个数据则不进行操作,如果小于第二个数据,则将第二个数据进行后移(与第三个数据交换位置,第三个位置数据已经拷贝)一位)第四个数据则与前面的三个数据进行比较,然后插入到合适位置。重复以上步骤(循环 n - 1 次)2、举例演示原数组: [117, 101, 106,原创 2020-09-08 23:23:31 · 170 阅读 · 0 评论 -
Java基础算法之希尔排序(Shell Sort)
希尔排序(Shell Sort)1、算法介绍2、举例演示3、图解4、代码实现(交换法)5、代码实现(移位法)6、运行结果(交换法)1、算法介绍将n个数据的数组分为 n / 2 组(以 n / 2 作为增量,如果是增量的整数倍则为一组)。例如[117, 101, 106, 155, 112, 60],分为 3 组 ,分别为[117, 155],[101, 112],[106, 60]。然后将每组进行插入排序。再将n个数据分为 n / 2*2 组,再以小组为单位进行排序。如果增量为1(n个数据为一组原创 2020-09-09 22:56:31 · 480 阅读 · 1 评论