![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序
排序算法
Willow_zhu
这个作者很懒,什么都没留下…
展开
-
java语言实现堆排序
1.堆堆,其实是一个完全二叉树,分为大顶堆和小顶堆。大顶堆:每个节点的值都大于或者等于其左右子节点的值小顶堆:每个节点的值都小于或者等于其左右子节点的值注意:堆中某个节点的左右子节点的值的大小关系没有要求,即左子节点的值可以大于、可以等于、也可以小于右子节点的值。升序采用大顶堆、降序采用小顶堆。2.堆排序首先将 n 个元素的待排序序列构建成一个大顶堆,这样待...原创 2020-03-23 13:14:32 · 140 阅读 · 0 评论 -
java语言实现归并排序
分治策略分治策略就是将一个问题分解成很多小问题,递归求解,然后将每个小问题的解“组合”在一起,问题就被解决了。归并排序归并排序就是利用了分治策略。思想如下图所示:代码如下:public class MergeSort { public static void main(String[] args) { int[] array = {8,4,5,7,1}; ...原创 2020-03-16 22:10:21 · 125 阅读 · 0 评论 -
java语言实现基数排序
基数排序将所有的待排序的元素通过高位补0的方式统一长度,然后比较他们的个位进行排序,得到一个序列之后,再比较十位,以此类推,一直比较到最高位。就得到一个有序序列。具体过程如下图:代码如下public class RadixSort { public static void main(String[] args) { int[] array = {1...原创 2020-03-17 10:29:09 · 138 阅读 · 0 评论 -
java语言实现快速排序
快速排序快速排序是对冒泡排序的一种改进。首先,找出一个基准值,然后将元素中比这个基准值小的放在基准值左边,比基准值大的元素放在基准值右边。这样一趟排序下来,基准值左边的元素都比基准值小,基准值右边的元素都比基准值大。然后在用同样的方法,分别对左边元素和右边元素递归地进行排序,最终使整个序列有序。这里,我选中间元素为基准值,我将从序列两端进行遍历,从左边遇到一个比基准值大的元素便停下...原创 2020-03-16 19:27:12 · 158 阅读 · 0 评论 -
java语言实现希尔排序
为什么提出希尔排序之前讲到过插入排序,我们的算法是从当前元素,向前移动,比较元素的大小的。如果当前元素是1,而有序列表中的元素是[2,3,4,5,6],那么需要比较和移动的次数就有点多,对效率有影响。而希尔排序是也是插入排序的一种,只不过是插入排序改进之后的更高效的版本。希尔排序的思想希尔排序是将元素按下标的一定增量进行分组,每一组元素使用插入排序;所有的组都排序完成之后,再把增量...原创 2020-03-15 09:56:17 · 106 阅读 · 0 评论 -
java语言实现插入排序
插入排序的基本思想把含有n个待排序的元素看成是由一个有序表和无序表;在初始状态下,有序表中只有一个元素,即数组的第一个元素,无序表中有剩下的 n-1 个元素;排序过程中,把无序表的第一个元素按某个顺序插入到有序表的合适位置中,使它们分别成为新的有序表和无序表;再继续插入排序,直到完全有序。代码实现...原创 2020-03-13 22:45:49 · 150 阅读 · 0 评论 -
java语言实现选择排序
选择排序的思路给定一个数组a,第 1 趟从 a[0]~a[n-1] 中选出最小的元素与 a[0] 交换;第 2 趟从 a[1]~a[n-1] 中选出最小的元素与 a[1] 交换;第 i 趟从 a[i-1]~a[n-1] 中选出最小的元素与 a[i-1] 交换;第 n-1 趟从 a[n-2]~a[n-1] 中选出最小的元素与 a[n-2] 交换;总共经历 n-1 趟选择,就能够完成选...原创 2020-03-12 22:45:47 · 151 阅读 · 1 评论 -
java语言实现冒泡排序
冒泡排序的思想通过对待排序的序列从前往后,依次比较相邻元素的值。如果发现逆序,就交换两个元素的值,使值较大的元素从前向后移动。冒泡排序的规则1.一共会进行(数组大小 减 1)趟排序 2.每一趟排序的次数会减少。因为每一趟都会确定一个元素的最终位置,之后就只用比较其他元素即可。3.(优化)如果我们发现在某一趟排序中没有发生一次交换,冒泡排序就可以提前结束。代码如下p...原创 2020-03-11 22:54:22 · 212 阅读 · 1 评论