算法复习之希尔排序

原创 2015年07月09日 10:18:51
#include<iostream>
void prin(int* list,int len)
{
    for(int i = 0 ;i<len ;++len)
        std::cout<<list[i]<<" " <<std::endl;
}
/*
*希尔排序
*list:待排序的数组,len:待排序数组的长度
*时间复杂度:O(nlgn)
*   希尔排序是按照不同步长对元素进行插入排序,当刚开始元素很无序的时候,
*   步长最大,所以插入排序的元素个数很少,速度很快;
*   当元素基本有序了,步长很小,插入排序对于有序的序列效率很高。
*   所以,希尔排序的时间复杂度会比o(n^2)好一些。
*/
void shellSort(int *list,int len)
{
    int i,j,group,temp ;
    for(group = len/2;group >=1 ;group/=2)//增量
    {
        for(i = group ;i<len;++i)//分组排序
        {
            temp = list[i] ;//待排序的元素
            for(j = i-group;j>=0&& list[j]>temp;j-=group)//将无序的进行交换
            {
                list[j+group] = list[j] ;
            }
            list[j+group] = temp ;//插入待排序的元素
        }
    }
    prin(list,len) ;
}
int main()
{
    int a[] = {5,8,2,4,9,0,1,6,7,3} ;
    shellSort(a,sizeof(a)/sizeof(int));
    return 0 ;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

希尔排序:Java(最小增量排序)

基本思想: 基本思想:算法先将要排序的一组数按某个增量 d(n/2,n为要排序数的个数)分成若 干组,每组中记录的下标相差 d.对每组中全部元素进行直接插入排序,然后再用一个较小 的...
  • luojiusan520
  • luojiusan520
  • 2015年11月12日 07:29
  • 587

算法(第四版)——04希尔排序

public class ShellSort { public static void main(String[] args) { int[] a = {45,67,43,28,90,15,77...
  • sdsxxzw
  • sdsxxzw
  • 2016年11月11日 17:16
  • 144

数据结构实验之排序六:希尔排序 【OJ--3403】

题目描述 我们已经学习了各种排序方法,知道在不同的情况下要选择不同的排序算法,以期达到最好的排序效率;对于待排序数据来说,若数据基本有序且记录较少时,直接插入排序的效率是非常好的,希尔排序就是针...
  • zhang_di233
  • zhang_di233
  • 2015年12月23日 19:05
  • 1092

希尔排序算法(排序详解)

希尔排序  基本思想 希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因DL.Shell于1959年提...
  • qq845579063
  • qq845579063
  • 2016年05月18日 21:12
  • 1354

经典排序算法---希尔排序(C/C#)

原理:每隔sp(整数)个数即取数并判断大小,交换,先构造局部有序序列,直到sp为1,构造完整的有序序列。         给出一组数据,如下: 0 1 2 3 4 5 ...
  • lucky51222
  • lucky51222
  • 2014年05月18日 00:57
  • 2452

算法代码实现之希尔排序,Java实现

封装成类: package com.roc.algorithms.sort; /** * 希尔排序 * * @author roc */ public class ShellSort { ...
  • QQ245671051
  • QQ245671051
  • 2016年02月28日 16:26
  • 1063

Java经典算法的实现(一)-----希尔排序

一名正在努力进阶的android程序猿,除了会java以外,还需要掌握数据结构与算法,对此做个学习的记录,或者说打码,记录我认为有意义的算法,或者说自己觉得不懂的 希尔排序算法: ...
  • Anny_Lin
  • Anny_Lin
  • 2015年07月09日 11:31
  • 731

PHP实现排序算法----希尔排序(Shell Sort)

基本思想:希尔排序是指记录按下标的一定增量分组,对每一组使用 直接插入排序 ,随着增量逐渐减少,每组包含的关键字越来越多,当增量减少至 1 时,整个序列恰好被分成一组,算法便终止。操作步骤:先取一个小...
  • baidu_30000217
  • baidu_30000217
  • 2016年11月08日 19:04
  • 1173

数据结构之直接插入排序、折半插入排序、希尔排序算法

直接插入排序: 我们的记录本身就是基本有序的,我们只需要少量的插入操作,就可以完成整个记录集的排序工作,此时直接插入很高效。还有就是记录数比较少时,直接插入的优势也比较明显。 void InsertS...
  • gotowu
  • gotowu
  • 2015年10月23日 16:29
  • 3254

C++、C#、java算法学习日记05----希尔排序(ShellSort)

希尔排序是插入式排序的一种,也称缩小增量排序,是对 直接插入排序  的一种更高效的改进算法, 基本思想:      希尔排序是把记录按下标的一定增量(也就是按一定的步长)分组,对每组使用直接插...
  • HC666
  • HC666
  • 2015年11月01日 18:14
  • 889
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:算法复习之希尔排序
举报原因:
原因补充:

(最多只允许输入30个字)