```java package algorithm.sort; / @Auther: AaronPi @Date: 2019 4 27 23:01 @Description: 稳定性:待排序的序列中有想等值得元素排序后元素之间原有的先后顺序不变 原地排序算法:特指空间复杂度为O(1)的排序算法 / ...
分类:
编程语言 时间:
2019-08-25 13:41:21
阅读次数:
95
归并排序的时间复杂度任何情况下都是 O(nlogn),看起来非常优秀。(即便是快速排序,最坏情况下,时间复杂度也是 O(n2)。) 但是,归并排序并没有像快排那样,应用广泛,这是为什么呢?因为它有一个致命的“弱点”,那就是归并排序不是原地排序算法。 这是因为归并排序的合并函数,在合并两个有序数组为一 ...
分类:
编程语言 时间:
2019-07-14 19:39:52
阅读次数:
104
关于排序算法,常见的大致有:冒泡排序、插入排序、选择排序、快速排序、归并排序、桶排序、计数排序等。每一种排序算法都有它们各自的优劣和适用场景。一般可以从这么几个角度来衡量排序算法: 1.最好时间复杂度、最坏时间复杂度、平均时间复杂度 2.是否是原地排序算法:原地排序算法,指空间复杂度为O(1) 3. ...
分类:
编程语言 时间:
2019-07-09 09:40:28
阅读次数:
139
快速排序 快速排序通过一个切分元素将数组分成两个子数组,左子数组小于等于切分元素,右子数组大于切分元素,将这两个子数组排序,也就是将整个数组排序了。 代码如下: 快速排序是原地排序,不需要辅助数组,但是递归调用需要辅助栈。快速排序最好的情况下是每次都正 ...
分类:
编程语言 时间:
2019-06-28 16:35:05
阅读次数:
103
归并排序原理: 利用分治的思想,通过递归来实现的, java代码: 性能分析: 时间复杂度:O(n*logN) 空间复杂度:O(n) 原地排序:否 稳定排序:是 ...
分类:
编程语言 时间:
2019-01-30 16:07:29
阅读次数:
209
简单选择排序原理: 性能分析: 时间复杂度:O(n^2) 空间复杂度:O(1) 原地排序:是 稳定排序:否 ...
分类:
编程语言 时间:
2019-01-30 13:07:21
阅读次数:
143
一、如何选择合适的排序算法?1.排序算法一览表 时间复杂度 是稳定排序? 是原地排序?冒泡排序 O(n^2) 是 是插入排序 O(n^2) 是 是选择排序 O(n^2) 否 是快速排序 O(nlogn) 否 是 归并排序 O(nlogn) 是 否桶排序 O(n) 是 否计数排序 O(n+k),k是数 ...
分类:
编程语言 时间:
2018-11-18 11:37:06
阅读次数:
365
? 书中第五章部分程序,包括在加上自己补充的代码,字符串高位优先排序(计数 + 插排),(原地排序),(三路快排,与前面的三路归并排序相同) ● 计数 + 插排 ● 原地排序 ● 三路快排 ...
分类:
编程语言 时间:
2018-10-29 11:10:58
阅读次数:
140
sort它是把L原地排序,也就是使用后并不是返回一个有序的序列副本,而是把当前序列变得有序 sorted函数是内建函数,它接受一个序列,返回有序的副本 它与sort的唯一区别就是会返回副本 这一点是最突出的区别 sort是容器的函数:sort(cmp=None, key=None, reverse= ...
分类:
其他好文 时间:
2018-09-20 00:55:47
阅读次数:
181
题目 有一个只由0,1,2三种元素构成的整数数组,请使用交换、原地排序而不是使用计数进行排序。 给定一个只含0,1,2的整数数组A及它的大小,请返回排序后的数组。保证数组大小小于等于500。 测试样例: [0,1,1,0,2,2],6返回:[0,0,1,1,2,2] 题目 题目 有一个只由0,1,2 ...
分类:
编程语言 时间:
2018-06-18 00:30:23
阅读次数:
190