算法 / 排序算法
codelmh
这个作者很懒,什么都没留下…
展开
-
计数排序(稳定)
一、计数排序 时间复杂度:O(n+k) 空间复杂度:O(n+k) n:数组长度 k:桶长度 稳定性:稳定 二、使用场景 量大范围小,例如:求某公司大量员工年龄、高考分数 等等 三、上代码 package sort; import java.util.Arrays; /**计数排序(小-->大) * @author codelmh * @data 2021/11/21 */ public class CountSort { public static...原创 2021-11-21 20:10:00 · 413 阅读 · 0 评论 -
插入排序(直接插入、希尔排序)
一、直接插入排序 时间复杂度:O(n²) 空间复杂度:O(1) 稳定性:稳定 直接插入排序就有点像整队一样,已经已经排序的差不多了,但是突然发现你前面有个人的个子明显矮了半截,然后整队的人就会把他往前面插进去,然后刚刚位置前他当前位置以后的所有人都会往后挪一个位置 例如: 由小到大排序 2, 1, 5, 6, 7, 3, 4 ① 2与1比 ,2比1大,交换位置 1, 2, 5, 6, 7, 3, 4 ②2和5 比、5和6比、6和7比,都不用交换位置 1, 2, 5...原创 2021-11-21 13:03:56 · 609 阅读 · 0 评论 -
归并排序(细~~)
一、归并 归并排序先懂归并那接下来的代码也就更加容易理解了。 假设有一个数组那我们如何进行归并呢?如下数组两边有序的数组才能进行归并 arr= {1, 4, 7, 9, 2, 5, 8} 我们将这个数组看成两个小有序数组,但是不是分开 arrLeft = {1, 4, 7, 9} arrRight = {2, 5, 8} 那么我们将这两个数合并成一个有序数组 ①先创建一个新数组和arr的长度一致,前期准备 //构建一个新数组 和原来的数组长度一致 ...原创 2021-11-21 08:00:00 · 68 阅读 · 0 评论 -
冒泡排序 (小优化)
时间复杂度:O(n²) 空间复杂度:1 稳定性:稳定 冒泡排序的原理是:从左到右,相邻元素进行比较。每次比较一轮,就会找到序列中最大并且将这个数放到数组的相应位置。 比如对下面这个序列进行从小到大排序: 5, 9, 2, 7, 4, 1, 8, 3, 6 第一轮: 1) 5 和 9比,5 < 9,则它们不交换位置 5, 9, 2, 7, 4, 1, 8, 3, 6 2) 9 和 2 比,9 > 2,则交换位置 5, 2, 9, 7, 4, 1, ...原创 2021-11-19 10:36:54 · 749 阅读 · 0 评论