摘要: 各种常用排序算法 类别 排序方法 时间复杂度 空间复杂度 稳定性 复杂性 特点 最好 平均 最坏 辅助存储 简单 插入 排序 直接插入 O(N) O(N2) O(N2) O(1) 稳定 简单 希尔排序 O(N) O(N1.3) O(N2) O(1) 不稳定 复杂 选择 排序 直接选择 O(N) O( 阅读全文
posted @ 2019-01-30 14:56 林牛克思 阅读(2072) 评论(0) 推荐(0) 编辑
摘要: 希尔排序的原理: java代码: 性能分析: 时间复杂度:O(n^2) 空间复杂度:O(1) 原地排序:是 稳定排序:否 阅读全文
posted @ 2019-01-30 14:55 林牛克思 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 快速排序原理: 选择一个关键值作为基准值。比基准值小的都在左边序列(一般是无序的),比基准值大的都在右边(一般是无序的)。一般选择序列的第一个元素或最后一个元素(还可以3个元素(第一个,中间,最后一个)取中)。 java代码:(随机选取一个基准值) 性能分析: 时间复杂度:O(n*logN) 空间复 阅读全文
posted @ 2019-01-30 14:24 林牛克思 阅读(96) 评论(0) 推荐(0) 编辑
摘要: 归并排序原理: 利用分治的思想,通过递归来实现的, java代码: 性能分析: 时间复杂度:O(n*logN) 空间复杂度:O(n) 原地排序:否 稳定排序:是 阅读全文
posted @ 2019-01-30 13:57 林牛克思 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 插入排序的原理: 插入排序有点类似选择排序,在未排序序列中找到最小元素,存放到排序序列的起始位置 再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾。 以此类推,直到所有元素均排序完毕。区别是:选择排序是交换,插入排序是部分平移。 java代码: 性能分析: 时间复杂度:O(n^2) 空间复 阅读全文
posted @ 2019-01-30 13:50 林牛克思 阅读(93) 评论(0) 推荐(0) 编辑
摘要: 简单选择排序原理: 性能分析: 时间复杂度:O(n^2) 空间复杂度:O(1) 原地排序:是 稳定排序:否 阅读全文
posted @ 2019-01-30 11:31 林牛克思 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 冒泡排序的原理: 代码还有改进的空间,如果排序到后面都是有序的了,此时无需继续比较了,例如:对于一个有序度比较高的数组{1,2,3,4,6,5},第一次冒泡变成{1,2,3,4,5,6},第二次冒泡没有交换数据,此时数组已经是有序的,无需继续冒泡下去。 java代码: 性能分析: 时间复杂度:O(n 阅读全文
posted @ 2019-01-30 11:18 林牛克思 阅读(152) 评论(0) 推荐(0) 编辑