zoukankan      html  css  js  c++  java
  • 4-希尔排序ShellSort

    希尔排序是1959 年由D.L.Shell 提出来的,相对直接排序有较大的改进。希尔排序又叫缩小增量排序 

    最后一个增量必须为1才可以, 由于是跳跃式的排序 希尔排序不稳定,时间复杂度为O(N^1.5)

    关键在于增量 的选择 我们来通过演示图,更深入的理解一下这个过程。


    #include <iostream>
    #include <cstring>
    using namespace std;
    void ShellSort(int *a, int n)
    {
        int step = n/2;  //先按增量step n/2,n为要排序数的个数进行希尔排序
        while(step>=1)
        {
            for(int i=step;i<n;i++)
            {
                if(a[i]<a[i-step])
                {
                    int temp = a[i];
                    int j=i-step;
                    for(; j>=0 && temp<a[j]; j=j-step)
                    {
                        a[j+step] = a[j];
                    }
                    a[j+step] = temp;
                }
            }
            step = step/2;
        }
    }
    void InsertSort(int *a, int n)
    {
        for(int i=1; i<n;i++)
        {
            if(a[i]<a[i-1])
            {
                int temp = a[i];
                int j=i-1;
                for(;j>=0 && temp<a[j];j--)
                {
                    a[j+1] = a[j];
                }
                a[j+1] = temp;
            }
        }
    }
    int main()
    {
        int a[9] = {9,1,5,8,3,7,4,6,2};
        int b = sizeof(a)/sizeof(int);
        ShellSort(a,9);
        for(int i=0;i<9;i++)
        {
            cout<<a[i]<<" ";
        }
        cout<<endl;
        return 0;
    }
    


    关注公众号 海量干货等你
  • 相关阅读:
    css flex布局应用
    Java 中 List、HashTable、HashMap、TreeMap
    Java 面向对象的三大特征
    Java-冒泡排序算法
    单例模式- 实现方式
    Mac
    Appium DesiredCapabilities 参数设置
    Mac- appium 环境配置
    PHP安装+使用
    mac 安装protobuf,并编译
  • 原文地址:https://www.cnblogs.com/sowhat1412/p/12734488.html
Copyright © 2011-2022 走看看