排序算法:希尔排序
2015-09-02 15:12
375 查看
摘要:排序算法有很多,最简单的有冒泡排序和插入排序,这两种方法都具有O(N^2)的时间界.我们想要讨论的是具有更好的时间界的排序算法,比如希尔排序.
(1)希尔排序的思路是通过比较一定间距的元素来进行排序,最后再对所有相邻元素进行一次插入排序.
(2)希尔排序最重要的参数是增量序列(h1,h2,…..ht),只要h1 = 1,那么增量序列可以任意选择.但是不同的增量序列可能会有较大的性能差异;我们选择的一种序列是ht = [N/2],hk = [hk+1/2];
代码如下:
(1)希尔排序的思路是通过比较一定间距的元素来进行排序,最后再对所有相邻元素进行一次插入排序.
(2)希尔排序最重要的参数是增量序列(h1,h2,…..ht),只要h1 = 1,那么增量序列可以任意选择.但是不同的增量序列可能会有较大的性能差异;我们选择的一种序列是ht = [N/2],hk = [hk+1/2];
代码如下:
void Shellsort(int *A,int N) { int i,j,Increment,tmp; for ( Increment = N/2;Increment >= 1; Increment /= 2) { //确定增量 for( i = Increment;i<=N-1;i++) { //进行插入排序,A[i]遍历所有以Increment为间距的子分组的元素 tmp = A[i]; for ( j = i;j>=Increment;j -= Increment) { //进行一次插入,确定A[i]需插入的位置(前面的元素一定保证有序插入才有效) if (A[j] < A[j-Increment]) A[j] = A[j - Increment];//往后移动 else break; } A[j] = tmp; } } }
相关文章推荐
- JavaScript演示排序算法
- 算法之排序算法的算法思想和使用场景总结
- C++实现简单的希尔排序Shell Sort实例
- php 地区分类排序算法
- js三种排序算法分享
- Javascript中的常见排序算法
- java 合并排序算法、冒泡排序算法、选择排序算法、插入排序算法、快速排序算法的描述
- 希尔排序的算法代码
- c语言实现冒泡排序、希尔排序等多种算法示例
- C++实现八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序等
- 排序算法的javascript实现与讲解(99js手记)
- C++中十种内部排序算法的比较分析
- Java实现几种常见排序算法代码
- 浅谈javascript实现八大排序
- PHP常用的排序和查找算法
- JavaScript中九种常用排序算法
- STl中的排序算法详细解析
- PHP四种基本排序算法示例
- 排序算法之PHP版快速排序、冒泡排序
- JavaScript排序算法之希尔排序的2个实例