本文摘要: 1:比较和排序的概念; 2:IComparable和IComparer; 3:IComparable和IComparer的泛型实现IComparable<T>和IComparer<T>; 1:比较和排序的概念 比较:两个实体类之间按>,=,<进行比较。 排序:在集合类中,对集合类中的实体 ...
分类:
编程语言 时间:
2016-04-14 17:37:42
阅读次数:
204
前言 前面差不多学习了插入排序、选择排序、冒泡排序、归并排序。这些排序除了归并排序在时间上消耗为:θ(nlgn)外,其余排序时间消耗都为:θ(n2). 接下来要讲的就是两种比较优雅的比较排序算法:堆排序和快速排序。 堆排序最坏情况下可以达到上界:ο(nlgn).快速排序平均情况下可以达到:θ(nlg ...
分类:
编程语言 时间:
2016-04-13 23:51:02
阅读次数:
313
选择排序图像化显示: 选择排序的基本思想:从待排序序列中找到最小(大)的元素,存放到序列起始位置,缩小排序范围,再找当前序列最小(大)的元素,放在起始位置之后,直到所有数据都被排完。时间复杂度=O(n^2)空间复杂度=O(1)最好情况:已经有序交换次数O(1)最坏情况:..
分类:
编程语言 时间:
2016-04-11 10:28:25
阅读次数:
388
非比较排序试用于元素比较集中的序列。1、计数排序找出待排序的数组中最大和最小的元素统计数组中每个值为i的元素出现的次数,存入数组C的第i项对所有的计数累加(从C中的第一个元素开始,每一项和前一项相加)反向填充目标数组:将每个元素i放在新数组的第C(i)项,每放一个元..
分类:
编程语言 时间:
2016-04-11 07:35:02
阅读次数:
234
1、选择排序 基本思路:选择某个索引位置的元素,然后和后面元素依次比较,若大于则交换位置,经过第一轮比较排序后可得出最小值,然后使用同样的方法把剩下的元素逐个比较即可。 2、冒泡排序 基本思路:对未排序的各元素从头到尾依次比较相邻的两个元素大小关系,若大于则交换位置,经过第一轮比较排序后可得出最大值 ...
分类:
编程语言 时间:
2016-04-08 00:52:24
阅读次数:
187
常见的比较排序如下:以下就用C++一个个实现它们#include<iostream>
#include<assert.h>
usingnamespacestd;
//插入排序(便于看复杂度)
template<classT>
voidInsertSort1(Tarr[],constint&size)
{
for(inti=0;i<size;i++)
{
for(intend=i;en..
分类:
编程语言 时间:
2016-04-01 16:13:17
阅读次数:
185
排序方法 平均情况 最好情况 最坏情况 辅助空间 稳定性 冒泡排序 O(n^2) O(n) O(n^2) O(1) 稳定 选择排序 O(n^2) O(n^2) O(n^2) O(1) 不稳定 插入排序 O(n^2) O(n) O(n^2) O(1) 稳定 希尔排序O(n*log(n))~O(n^2) ...
分类:
编程语言 时间:
2016-03-27 01:28:20
阅读次数:
155
说基数排序之前,我们先说桶排序: 基本思想:是将阵列分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递回方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。当要被排序的阵列内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n))。但桶排序并不是 比较排序,他不受到
分类:
编程语言 时间:
2016-03-18 21:33:21
阅读次数:
168
Comparable & Comparator 都是用来实现集合中元素的比较、排序的,只是 Comparable 是在集合内部定义的方法实现的排序,Comparator 是在集合外部实现的排序,所以,如想实现排序,就需要在集合外定义 Comparator 接口的方法或在集合内实现 Comparabl
分类:
编程语言 时间:
2016-03-10 09:23:31
阅读次数:
215
1.知识点了解 Comparator和Comparable都是用用来实现集合中元素的比较、排序的,所以,经常在集合外定义Comparator接口的方法和集合内实现Comparable接口的方法中实现排序 相同点: 二者的比较方法Comparable的compareTo和compare返回的结果有三种
分类:
其他好文 时间:
2016-02-23 15:59:09
阅读次数:
229