算法
yanhom.lin
动态线程池DynamicTp作者,Nacos、Dubbo、RocketMq等开源项目贡献者,专注后端领域,跟你一起变强!
展开
-
选择排序 -JAVA详解
/** * 选择排序是一种简单的排序算法,原理是把待排序数组分为已排序好和未排序两个,开始先从数组中找到一个最小(最大)元素, * 放在数组的开始位置作为已排序好数组,假设是第一个元素,然后跟后边元素去比较,小则更新,内部循环结束后去如果更新过了去交换值 * * 和冒泡排序的区别,冒泡排序会依次比较交换相邻不合法元素,而选择排序每次遍历都是记录了最小(最大)元素的位置,最后只做一次交换即可原创 2017-10-27 16:52:21 · 254 阅读 · 0 评论 -
插入排序 -JAVA详解
/** * 插入排序是一种简单的排序in-place排序(即只需O(1)的额外空间排序)算法,把数组分为两个子数组, * 一个是已排序好的,一个是为排序的,从未排序的数组中拿出元素然后在已排序数组中从后往前扫描, * 找到相应位置(小于或者大于)并插入,在从后向前扫描的过程中,需要反复把已排序元素逐步向后挪位, * 为新元素提供插入空间 * * 时间复杂度O(n^2) * * @a原创 2017-10-27 17:37:55 · 3144 阅读 · 0 评论 -
快速排序 -JAVA详解
/** * 快速排序是一种基于分治法的排序方法,平均时间复杂度 O(NLogN),主要思想是选取一个基准元素,遍历数组,比基准元素大的放到右边,小的放到左边,然后递归处理 * * author yanhom * createTime 2017/10/26 */public class QuickSort { /** * 1.对输入的数组选取一个基准元素,比如第一个元原创 2017-10-26 16:46:34 · 233 阅读 · 0 评论 -
归并排序 -JAVA详解
/** * 快速排序是一种运用了分治法的排序算法,将输入数组分成两个,然后分别递归使得每个子数组有序,然后归并成一个有序的数组 * * @author yanhom * @time 2017/10/26 */public class MergeSort { /** * 1.以中间位置将数组划分为两个子数组,分别递归两个子数组使之有序,递归退出条件是只有一个元素,此时原创 2017-10-26 18:18:30 · 475 阅读 · 0 评论