![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序算法
Foools
这个作者很懒,什么都没留下…
展开
-
堆排序(java)
堆排序 时间复杂度O(nlogn),不稳定排序。 堆是具有一下性质的完全二叉树:每个节点的值都大于或等于其左右孩子节点的值,称为大顶堆;每个节点的值都小于或等于左右孩子节点的值,称为小顶堆。(不要求左右孩子节点的大小关系) 大顶堆特点:arr[i] >= arr[2i+1] && arr[i] >= arr[2i+2] 小顶堆特点:arr[i] <= arr[2i+1] && arr[i] <= arr[2i+2] 升序使用大顶堆,降序使用小顶堆 i是原创 2021-03-24 20:59:11 · 87 阅读 · 0 评论 -
基数排序(java)
基数排序 将整数按照位数切割成不同的数字,按每个位数分别比较。 基数排序是稳定的(大小相同的两个数,排序完成之后靠前的那一个仍然在前面) 思想:基数排序是依靠空间来交换时间的一种排序,一般我们会设置数据桶为一个二维数组。 找到数组中最大的数并查看它的位数 按照个位,十位,百位这样for循环,分别进行排序 将序列中每个元素取出,放入对应的桶中 遍历每个桶,将桶中的数据放入到原数组。统计完成后,要将桶清空。 代码实现: package com.sortAlgorithm; import原创 2021-03-17 20:38:08 · 85 阅读 · 0 评论 -
归并排序(java)
归并排序 利用分治策略,将大问题分为小问题递归进行求解。 基本思想: 合并相邻有序子序列的过程 思路分析: 一般来说先写一个分解的函数,再写一个合并的函数。 分解函数 判断是否left<right,如果是的话进行计算mid操作之后,完成左边的分解和右边的分解。 在完成分解之后进行一次合并 合并函数 把左右两边的数据按照规则填充到temp数组,直到有一边序列填充完毕了。 i<mid,j<right的前提下:左右进行比较,小的移动到temp中 移动之后,被移动的数组中的索引加一,t原创 2021-03-17 20:37:19 · 89 阅读 · 0 评论 -
快速排序(java)
快速排序 通过一趟排序将要排序的数字分割成独立的两部分,其中一部分的数据比另一部分所有数据都小,然后再对这两组数据进行排序,整个排序过程递归进行。 package com.sortAlgorithm; import java.util.Arrays; public class quickSort { public static void main(String[] args){ int[] arr = {-9,78,0,23,-567,70,-1,900,4561};原创 2021-03-17 20:35:30 · 137 阅读 · 0 评论 -
插入排序法(java)
插入排序法 属于内部排序法,是对于欲排序的元素以插入的方式寻找元素的适当位置,以达到排序的目的。 排序方法为把n个待排序的元素看成一个有序列表和一个无序表,开始时有序表中只包含1个元素,无序表中包含n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的序码依次与有序元素的排序码相比较,将它插入到有序码中适当位置,使之成为新的有序表。 代码实现: package com.sortAlgorithm; public class insertSort { public static void ma原创 2021-03-17 20:34:54 · 89 阅读 · 0 评论 -
选择排序法(java)
选择排序法 介绍: 从长度为n的序列中,找到最小的数字,将这个数字放到指定的位置,执行n-1次,实现排序。 思路: 一共有n-1轮排序(数组大小为n) 每一轮排序都是一个循环 假定当前数字为最小值 这个数与后面的数进行比较,如果有更小的数,则用更小的数替代当前的数作为最小值 遍历结束,将最小值与序列中未排序位置的数字进行交换 代码 package com.sortAlgorithm; public class selectionSort { public static void main原创 2021-03-17 20:34:10 · 96 阅读 · 0 评论 -
冒泡排序(java)
冒泡排序 按照排序序列从前向后,依次比较相邻元素的值,若发现逆序则交换,使较大的元素移动到序列的尾部。 优化:如果发现某次排序没有进行过交换,则证明当前为排序完成的序列,设置一个flag来判断元素是否进行过交换,从而减少不必要的比较。 一般来说,会进行 n-1次大的循环 每一趟排序的次数从n-1次开始减小 发现某次循环中序列的顺序没有发生变化,则直接退出程序 代码实现: package com.sortAlgorithm; public class bubbleSort { public st原创 2021-03-17 20:33:34 · 75 阅读 · 0 评论