●快速排序(QuickSort)1、算法描述:在平均状况下,排序n个数据要O(nlg(n))次比较。在最坏状况下则需要O(n^2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他O(nlg(n))算法更快,因为它的内部循环(innerloop)可以在大部分的架构上很有效率地被实现出来,且在..
分类:
编程语言 时间:
2016-05-22 18:34:12
阅读次数:
232
#include<iostream>
usingnamespacestd;
#include<assert.h>
//稳定性:指两个相同数排序后位置是否变化
//冒泡排序思想:相邻两数据比较交换,外层循环控制次数,内层比较
//voidBubbleSort(int*a,size_tlen)
//{
// assert(a);
// for(size_ti=0;i<len-1;++i..
分类:
编程语言 时间:
2016-05-16 00:32:41
阅读次数:
256
比较排序是比较常见的排序算法,它分为以下几个类:交换排序:冒泡排序(BubbleSort)和快速排序(QuickSort)。插入排序:直接插入排序和希尔排序(ShellSort)。选择排序:选择排序(SelectSort)和堆排序(HeapSort)。(一)交换排序:voidBubbleSort(int*arry,intsize)
{
..
分类:
编程语言 时间:
2016-05-15 12:41:27
阅读次数:
243
前几篇博客排序算法都是 用的比较排序,时间复杂度最低的是 O(nlgn),这也是比较排序最优的时间复杂度。
这次计数排序用的是线性时间复杂度的排序,也就是说不是通过比较来确定排序顺序的。
计数排序是 假设n个元素中的每一个都是在0到k区间内的一个整数,也就是整个数组里最大的数是 k,这是我们需要一个数组B[]来存放排序的输出,用C[]来提供临时存储的空间。其中,特别有意思的是,C[i],它保存...
分类:
编程语言 时间:
2016-05-13 00:45:53
阅读次数:
145
在对集合元素进行比较时一般使用TreeSet。对于简单的数据类型,TreeSet可以直接进行比较。但是对于复杂的数据类型,比如自己定义的数据类型或者类,就需要自己设置比较方法与比较规则了,这时就需要用到Comparable和Comparator了。1、Comparable和Comparator都是用来实现集合中的元素的比较、排序的。但也有所区别:(1)Comparable是在集合内部定义的方法实现排...
分类:
编程语言 时间:
2016-05-10 11:05:06
阅读次数:
214
本文由@呆代待殆原创,转载请注明出处。 简介:这个排序算法不属于比较排序,在平均情况下他的时间代价是O(n),并且它假设它的输入数据均匀的分布在一个固定的区间里。 思路:桶排序假设他的输入均匀的分布在一个固定的区间,并且它将这个区间划分成均匀的子区间,每个子区间称为一个桶,然后将输入的数据分别放到对 ...
分类:
编程语言 时间:
2016-04-25 14:31:08
阅读次数:
180
一、 Comparable<T>: Comparable是类内部的比较器,用于创建类的时候实现此接口,同时实现比较方法;对于不能修改源码的类则无法应用此方式进行比较排序等。 源码为: 1 public interface Comparable<T> { 2 public int compareTo( ...
分类:
编程语言 时间:
2016-04-25 11:46:12
阅读次数:
239
比较排序算法的时间复杂度是O(nlogn)的证明: 排序算法的比较是两两进行的,所以可以抽象成一棵二叉树,相互比较的数分别是左右叶子结点,,比较的结果存储在父节点中,依此类推。那么算法的时间复杂度就是取决于树的深度。如果要对n个数字进行比较排序,则需要进行n!次,即该二叉树有n!片叶子。 一棵深度为 ...
分类:
编程语言 时间:
2016-04-23 22:49:38
阅读次数:
668
本文由@呆代待殆原创,转载请注明出处。 简介:用于整数排序,不同于比较排序,计数排序假设输入元素的大小在0到k之间,通过计算比 i 小的数的个数而确定 i 的位置。 思路:计算所排序的数组中,比元素 i 小的数的个数 n,如果n=5,那么 i 就应该排列在第6个位置上,通过计算每一个元素的 n 值, ...
分类:
编程语言 时间:
2016-04-21 01:28:20
阅读次数:
306
前言: 前面所讲的排序算法基本都是需要进行两个数依次比较,这种两个数依次比较的算法不依赖于数组重元素的特性并且有下界Ω(nlogn)。换句话说就是使用比较排序算法最快的时间消耗没法小于这个界。那么是不是我们永远没法跨越这个梗呢?答案当然不是,当数组中的元素有一定的特点的时候,我们就可以利用这个特定, ...
分类:
编程语言 时间:
2016-04-16 15:19:35
阅读次数:
262