之前介绍了堆排序和归并排序,今天来说说快速排序。快速排序是应用较多的一种排序方法。 各算法平均排序时间: 数据是随机整数,时间单位是秒。(网上的数据,仅供参考) 数据规模 快速排序 归并排序 希尔排序 堆排序 1000万 0.75 1.22 1.77 3.57 5000万 3.78 6.29 9.4 ...
分类:
编程语言 时间:
2018-01-10 11:44:56
阅读次数:
180
Java排序算法 1)分类: 1)插入排序(直接插入排序、希尔排序) 2)交换排序(冒泡排序、快速排序) 3)选择排序(直接选择排序、堆排序) 4)归并排序 5)分配排序(箱排序、基数排序) 所需辅助空间最多:归并排序 所需辅助空间最少:堆排序 平均速度最快:快速排序 不稳定:快速排序,希尔排序,堆 ...
分类:
编程语言 时间:
2018-01-08 10:59:28
阅读次数:
205
class SortAlgorithm { static void Main(string[] args) { int[] arr1 = { 1, 4, 2, 7, 9, 8, 3, 6 }; //ShellSort(arr1); //DirectInsertSort(arr1); //Bubble ...
分类:
编程语言 时间:
2018-01-07 15:56:06
阅读次数:
203
初学排序算法,我觉得只需要掌握算法的精髓,没必要把所有算法都实现一遍,下面我会实现一些经典的排序算法。(均采用C++实现) 学习的排序算法包含: 1》插入排序(直接插入排序、希尔排序) 2》选择排序(简单选择排序、堆排序) 3》交换排序(快速排序、冒泡排序) 4》归并排序 5》基数排序 我认为初学者 ...
分类:
编程语言 时间:
2018-01-06 15:51:48
阅读次数:
172
转自:http://www.cnblogs.com/LUO77/p/5798149.html (一)快排 快排考的是最多次的。之前看大神写的算法很简单,思想也很好。就一直用他的思想去思考快排了。挖坑法。 拿走第一个元素作为标兵元素,即挖坑,然后从后面找一个比它小的填坑,然后又形成一个坑,再从前面找一 ...
分类:
编程语言 时间:
2018-01-05 22:04:15
阅读次数:
199
部分内容转自: 作者: dreamcatcher-cx 出处: <http://www.cnblogs.com/chengxiao/> 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在页面明显位置给出原文链接。 预备知识 堆排序 堆排序是利用堆这种数据结构而设计的一种排序算 ...
分类:
编程语言 时间:
2018-01-03 19:50:54
阅读次数:
186
一、堆排序算法的基本特性时间复杂度:O(nlgn)...//等同于归并排序最坏:O(nlgn)空间复杂度:O(1).不稳定。 二、堆与最大堆的建立要介绍堆排序算法,咱们得先从介绍堆开始,然后到建立最大堆,最后才讲到堆排序算法。 2.1、堆的介绍 如下图, a),就是一个堆,它可以被视为一棵完全二叉树 ...
分类:
编程语言 时间:
2018-01-01 11:46:41
阅读次数:
177
public static int[] heapSort(int[] arr) { int i; for (i = arr.length / 2; i >= 0; i--) { heapAdjust(arr, i, arr.length - 1); } for (i = arr.length - 1... ...
分类:
编程语言 时间:
2017-12-30 22:39:33
阅读次数:
205
import java.util.ArrayList; import java.util.List; /** * 排序算法主类 * * @author eric */ class SortArray { /* * 【插入排序】 * 基本思想: 在要排序的一组数中,假设前面(n-1) [n>=2] 个... ...
分类:
编程语言 时间:
2017-12-27 14:12:37
阅读次数:
131
这东西。。。好简单的诶 不过貌似一年前的时候,还没有写博客的习惯 那就来总结一下呗 首先来说大根堆 把大根堆当成一个完全二叉树(这个说法其实不准确) 对于a[i],左儿子为a[i*2]右儿子为a[i*2+1] 也就是说我们已经有一颗树了 然后我们从后往前fix每个节点 fix(x)就是将x放到他该在 ...
分类:
编程语言 时间:
2017-12-25 01:01:35
阅读次数:
144