关于排序算法,常见的大致有:冒泡排序、插入排序、选择排序、快速排序、归并排序、桶排序、计数排序等。每一种排序算法都有它们各自的优劣和适用场景。一般可以从这么几个角度来衡量排序算法: 1.最好时间复杂度、最坏时间复杂度、平均时间复杂度 2.是否是原地排序算法:原地排序算法,指空间复杂度为O(1) 3. ...
分类:
编程语言 时间:
2019-07-09 09:40:28
阅读次数:
139
堆排序介绍 堆排序是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。 可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是完全二叉树。 什么是完全二叉树呢?还有满二叉树又是怎么的一种二叉树呢?还有完满二叉树? 完全二叉树: 除了最后一层之外的其他每一层都被完全填 ...
分类:
编程语言 时间:
2019-07-07 12:38:47
阅读次数:
109
选择排序 原理 : 当i=0,首先找到最小的元素放在起始的位置,然后i=1,再然后找到最小的元素放到最左i=1的位置,然后i=2,... 动画演示 插入排序 归并排序 动画 逻辑解释 首先,讲数字分割成两份区域,在讲数字分割成两份区域,只到每块区域只有一个元素(这个过程是递归过程) 截下来,讲分割的 ...
分类:
编程语言 时间:
2019-07-01 00:26:22
阅读次数:
137
常见排序算法的稳定性 编辑 常见排序算法的稳定性 堆排序、快速排序、希尔排序、直接选择排序是不稳定的排序算法,而基数排序、冒泡排序、直接插入排序、折半插入排序、归并排序是稳定的排序算法。 首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前2个相等的数其在序列的前后位置顺序和排序后它们两个 ...
分类:
编程语言 时间:
2019-06-30 23:10:29
阅读次数:
222
可以用if...else的判断分支去列举所有可能的结果,但n个数就需要n!个判断,从代码量上来说是不可接受的。(写法略) 那如果每次操作找出当前所有数中的最值(最大或最小),然后就可以不再管那个最值了,从而缩小下一次所要处理的数据量,直至处理完所有数据。 想起来这和选择排序如出一辙啊 ...
分类:
编程语言 时间:
2019-06-30 20:36:08
阅读次数:
139
今天的每日一码,让我们来看一看一些常见的排序方法。 冒泡算法: 直接插入排序: 简单选择排序: ...
分类:
编程语言 时间:
2019-06-29 23:52:31
阅读次数:
133
了解和实现冒泡排序、选择排序、插入排序、希尔排序、归并排序、和快速排序。 1.冒泡排序 冒泡排序要对一个列表多次重复遍历。 它要比较相邻的两项,并且交换顺序排错的项。 每对列表实行一次遍历,就有一个最大项排在了正确的位置。 大体上讲,列表的每一个数据项都会在其相应的位置“冒泡”。 它们的顺序是否正确 ...
分类:
编程语言 时间:
2019-06-29 19:35:48
阅读次数:
124
一,冒泡排序 时间复杂度:O(n2) 稳定性:稳定 冒泡排序我就不多讲了,大体上就是比较相邻的两个数,每次把较大的数沉底。流程图大致上如下: 图是截得别人的,只是说明一下,代码没有参看别人的,写的不好,有更好的写法可以一起探讨。下面是代码: 这里添加了新的解法(2019.6.25): 二,选择排序 ...
分类:
编程语言 时间:
2019-06-27 23:00:50
阅读次数:
167
public class QuickDemo { public static void main(String[] args) { int[] arr = {5, 2, 4, 9, 7, 564, 123, 643, 8, 64, 8, 75, 6, 7968, 4648, 46};// sort( ...
分类:
编程语言 时间:
2019-06-24 16:36:15
阅读次数:
109