桶排序是一种稳定的排序方法,也是一种外排序。
桶排序的时间复杂度:最坏情况运行时间:当分布不均匀时,全部元素都分到一个桶中,则O(n^2),当然[算法导论8.4-2]也可以将插入排序换成堆排序、快速排序等,这样最坏情况就是O(nlgn)。最好情况运行时间:O(n)。
也就说,前面介绍的排序算法要么是O(n^2),要么是O(nlogn),只有桶排序是可能实现O(n)排序的...
分类:
编程语言 时间:
2015-02-25 18:44:00
阅读次数:
184
基排序是外排序,稳定的排序算法。
它的时间复杂度:O(d(r+n)),d为每个数的长度,r表示基数,n表示数组中元素的个数。
基数排序是另外一种比较有特色的排序方式,它是怎么排序的呢?我们可以按照下面的一组数字做出说明:12、 104、 13、 7、 9
(1)按个位数排序是12、13、104、7、9
(2)再根据十位排序104、7、9、12、13
(3)再根据百...
分类:
编程语言 时间:
2015-02-25 18:42:17
阅读次数:
169
基本思想:基于分治法,即把待排序的数组序列,分为若干个子序列,对每个子序列排序,然后再把所有有序的子序列合并为一个整体有序的序列。分析可知,如果拿任何一个元素作为子序列,那么所有子序列就已经是有序的,而归并排序的关键就在于如何合并,也就是“归并”。
归并排序是外排序,稳定排序,时间复杂度是O(nlogn).
详细说归并排序的过程:1个...
分类:
编程语言 时间:
2015-02-23 17:55:50
阅读次数:
272
选择排序的核心是:每趟选择最小的元素和首部交换。
时间复杂度:O(n^2)。
选择排序是一种不稳定的排序,为什么呢?因为不好处理相等两个数的前后位置,举个例子,序列5 8 5 2 9, 我们知道第一遍选择第1个元素5会和2交换,那么原序列中2个5的相对前后顺序就被破坏了,所以选择排序不是一个稳定的排序算法。所以稳定排序是一定不会改变相等数之间之前位置关系的。
...
分类:
编程语言 时间:
2015-02-21 17:46:47
阅读次数:
167
从这一篇开始,计划复习一下数据结构的基本知识。一来是为了开年之后的找工作,二来是为了想提升自己的编程能力。由于这些数据结构知识点,之前都学习过,这里我们就提炼出每个知识点的核心,以及代码实现。
这篇先说排序算法中的插入排序。
插入排序是一种稳定排序算法,属于内排序、适合少量数据量的排序。
当输入数组已经排好序时,插入排序需要O(n),快排需要O(n^2)。
当输入数...
分类:
编程语言 时间:
2015-02-21 09:47:40
阅读次数:
205
从这一篇开始,我开始复习数据结构的知识点,博文主要偏重于每个知识点的核心思想,以及代码实现。这一篇先从排序算法中的插入排序开始。
稳定排序、内排序、适合少量数据量的排序。
当输入数组已经排好序时,插入排序需要O(n),快排需要O(n^2)。
当输入数组倒序排列时,插入排序时复为:O(n^2)。
平均时间复杂度:O(n^2)。
插入排序的基本做法是:将一个数插入到一个已...
分类:
编程语言 时间:
2015-02-21 09:44:32
阅读次数:
227
这篇复习冒泡排序。
冒泡排序也是一种稳定排序、内排序。
冒泡排序的基本思想:对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。
插入排序比冒泡排序快!
上面说的是普通的冒泡排序算法,时间复杂度是O(n^2),这种方法只能一趟排序...
分类:
编程语言 时间:
2015-02-21 09:42:32
阅读次数:
186
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Sort{public class Sort{////// 插入排序--稳定排序//////public stati...
分类:
编程语言 时间:
2015-01-28 17:15:07
阅读次数:
180
一,各种排序算法比较各种排序算法比较二,相关概念1、稳定排序和非稳定排序简单地说就是所有相等的数经过某种排序方法后,仍能保持它们在排序之前的相对次序,我们就说这种排序方法是稳定的。反之,就是非稳定的。比如:一组数排序前是a1,a2,a3,a4,a5,其中a2=a4,经过某种排序后为a1,a2,a4,...
分类:
编程语言 时间:
2015-01-20 21:56:02
阅读次数:
181
选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,而冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。
分类:
编程语言 时间:
2015-01-18 22:29:37
阅读次数:
220