1.快速排序:不稳定排序,最好情况O(nlogn),最差情况O(n^2).平均情况在所有nlogn排序中最快的排序快速排序分两步第一步是将l-r区间进行分块(假设将区间最后一个作为关键字)前面一块的数比小于等于关键字,后面一块大于关键字,并返回第一个大于关键字的位置,即函数partition第二部是...
分类:
编程语言 时间:
2015-03-11 19:39:29
阅读次数:
146
选择排序的核心是:每趟选择最小的元素和首部交换。
时间复杂度:O(n^2)。
选择排序是一种不稳定的排序,为什么呢?因为不好处理相等两个数的前后位置,举个例子,序列5 8 5 2 9, 我们知道第一遍选择第1个元素5会和2交换,那么原序列中2个5的相对前后顺序就被破坏了,所以选择排序不是一个稳定的排序算法。所以稳定排序是一定不会改变相等数之间之前位置关系的。
...
分类:
编程语言 时间:
2015-02-21 17:46:47
阅读次数:
167
选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,而冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。
分类:
编程语言 时间:
2015-01-18 22:29:37
阅读次数:
220
梳排序(Comb sort)是一种由Wlodzimierz Dobosiewicz于1980年所发明的不稳定排序算法,并由Stephen Lacey和Richard Box于1991年四月号的Byte杂志中推广。梳排序是改良自冒泡排序和快速排序。在冒泡排序算法中,只比较阵列中相邻的二项,即比较的二项...
分类:
其他好文 时间:
2014-10-09 02:33:07
阅读次数:
145
最近忙着复习找工作,熟悉了下排序算法,动手写了一下,发现有些问题的边界条件还是没有考虑清楚,不过好在调试成功。不稳定排序:堆排序,快速排序,希尔排序;稳定排序:插入排序,冒泡排序,选择排序,归并排序,基数排序等。插入排序算法代码:void InsertSort(int A[],int n){ ...
分类:
其他好文 时间:
2014-08-28 19:39:25
阅读次数:
287
快速排序的原理:首先找一个标兵值,等于某一个元素值;遍历数组,将数组分为小于标兵值和大于标兵值的两部分;然后分别对两个部分采用快速排序,递归。分开数组时,维持一个指针,指向已找到小部分的最后一个元素;一个指针用于遍历。不稳定排序算法。当数组已经有序时,时间复杂度最差,为O(N2),平均、最优情况下都...
分类:
其他好文 时间:
2014-08-12 00:36:13
阅读次数:
146
原帖地址:http://www.oschina.net/question/1397765_159365 快速排序算法的基本特性: 时间复杂度:O(N * logN) 堆排序为不稳定排序,不适合记录较少的排序。 var arr = [],
count = 100,
i = 0,
parentIndex...
分类:
其他好文 时间:
2014-07-21 10:21:26
阅读次数:
207
堆数据结构是一种数组对象,它可以被视为一棵完全二叉树。时间复杂度为:O(n*logn),空间复杂度:O(1);平均时间复杂度和最坏时间复杂度都为:O(n*logn),但堆排序是不稳定排序。堆排序思路: 1.建立小堆:把堆看成一个完全二叉树,然后从这棵树的最大非叶子节点开始,比较...
分类:
其他好文 时间:
2014-07-05 11:12:28
阅读次数:
249
快速排序是对冒泡排序算法的一种改进型算法,而且快速排序也采用了分治法的思想。快速排序是不稳定排序,平均时间复杂度为:O(n*logn),最坏时间复杂度为:O(n*n),空间时间复杂度:O(logn),但快速排序通常是用于排序的最佳实用的选择。快速排序的思想:从数组选取一个数(通常是第一个数)...
分类:
其他好文 时间:
2014-07-03 23:36:18
阅读次数:
296
5.排序操作5.1基础知识对于排序操作,介绍过很多的算法,在笔记中有关于排序算法的简单总结,但是对于每一个配需算法没有详细的深入,知识对于排序的稳定性做了一下了解。下面深入的分析一下排序算法,并且使用C++语言实现。首先介绍上一次在笔记中整理稳定排序和不稳定排序的知识:选择排序、快速排序、希尔排序、...
分类:
其他好文 时间:
2014-06-28 17:25:00
阅读次数:
274