排序
来源:互联网 发布:pid4占用80端口 编辑:程序博客网 时间:2024/04/29 20:28
1、插入排序
public static <T extends Comparable<? super T>>void insertionSort( T[] a ){int j;for( int p=1; p<a.length; p++ ){T tmp = a[p];for( j=p; j>0 && tmp.compareTo( a[j-1] )<0; j-- ){a[j] = a[j-1];}a[j] = tmp;}}由于嵌套循环的每一个都花费 N 次迭代,因而插入排序为 O( N² )
插入排序的平均情形也是 Θ( N² )
2、希尔排序
它通过比较相距一定间隔的元素来工作;各趟比较所用的距离随着算法的进行而减小,直到只比较相邻元素的最后一趟排序为止。
由于这个原因,希尔排序有时也叫做缩减增量排序。
希尔排序使用一个序列 h1, h2, h3, ... hi, 叫做增量序列。只要 h1 = 1,任何增量序列都是可行的。在使用增量 hk 的一趟排序之后,对每一个 i 都有 a[ i ] <= a[ i + hk ] 所有相隔 hk 的元素都被排序。此时称文件是 hk 排序的。
public static <T extends Comparable<? super T>>void shellsort( T[] a ){int j;for( int gap = a.length/2; gap>0; gap/=2 ){for( int i=gap; i<a.length; i++ ){T tmp = a[i];for( j=i; j>=gap && tmp.compareTo( a[j-gap] )<0; j-=gap ){a[j] = a[j-gap];}a[j] = tmp;}}}
3、堆排序
建立 N 个元素的二叉堆,这个阶段花费 O( N ) 时间。
然后执行 N 次 deleteMin 操作。按照顺序,最小的元素先离开。通过将这些元素记录到第二个数组,然后再将数组拷贝回来,得到 N 个元素的排序。由于每个 deleteMin 花费时间 O( log N ),因此总的运行时间是 O( N log N )。
- 排序
- 排序
- 排序
- 排序
- 排序
- 排序
- 排序
- 排序
- 排序
- 排序
- 排序
- 排序
- 排序
- 排序
- 排序
- 排序
- 排序
- 排序
- Java 实现简单的邮件发送
- MatLab手记
- 在eclipse中配置hadoop插件
- PHP版本VC6与VC9、Thread Safe与None-Thread Safe等的区别
- android中的网络通信(三) Apache HTTP
- 排序
- Js验证(邮箱、手机、QQ号等)
- C# 串口操作系列(3) -- 协议篇,二进制协议数据解析 (转帖)
- MySQL创建用户与授权
- 读书笔记 <Bootstrap Yourself with Linux USB Stack>
- AndroidManifest文件(部分)
- C# DataGridView控件 动态添加新行
- “Microsoft OLE DB Provider for SQL Server 错误 '80040e09',拒绝了对对象 'Art_Config' (数据库 'GY_SFJ',架构 'dbo')”
- const 修饰函数相关