常见排序算法2–直接插入法vs希尔排序法

常见排序算法–直接插入法vs希尔排序法

首先,我们通过一个例子来了解直接插入算法

例如,对原始数组{15,24,3,49,10}进行直接插入排序(由小到大进行排序)
第一个数15无法比较,第二个数24与15比较,不做改变,第三个数3先后与24,15进行比较移到24的前面,第四个数49先后与24,15,3进行比较49不做改变,10分别与49,24,15,3相比,10移到3的前面。

如下

初始态数15数24数3数49数10
第一步排序后152434910
第二步排序后315244910
第三步排序后315244910
第四步排序后310152449
//将每个数与前面数组依次比对,知道这个数排到合适的位置
void insert(int a[],int n)
{
    for(i=1;i<n;i++)
    {
    //依次比对,直到该值大于数组中比较的值,后面的数组依次后移。
        for(j=i-1;j>=0;j--)
        {
            if(a[i]<a[j])
            {
                a[j+1]=a[j];
            }
            else
            {
                a[j+1]=a[i];
                break;
            }
        }
        if(j==-1&&a[i]<a[j+1])
            a[0]=a[i];//对(j==-1&&a[i]<a[j+1)进行单独分析
    }
}
希尔排序法:我们也通过一个例子来了解希尔排序法
如下一个无序数组(12 35 20 67 3)
首先进行第一次希尔排序,将数组每两个为一组,则{a[0],a[2],a[4]}为一大类进行直接插入排序,将{a[1],a[3]}为一类进行直接插入排序
然后进行第一次希尔排序,将数组每1个分为一组(就是直接插入排序),则{a[0],a[1],a[2],a[3],a[4]}进行直接插入排序.过程如下图。
初始状态123520673
两个一组排序
排序前12203
3567
排序后得到31220
3567
整理335126720
一个一组进行排序
排序前335126720
排序后312203567
代码如下
//分为两种情况,依次比较a[i]与a[j],a[j-k],a[j-2k],a[j-3k]...的值,直到a[i]>a[j]或者j<0;
void xier(int a[],int n,int v)//引入的v指的是分组的标准间隔,该算法表示经过一个间隔为k的希尔排序。
{
    for(i=v;i<n;i++)
    {
        j=i-v;
        while(a[j]>a[i]&&j>=0)
        {
            a[j+v]=a[j];
            j-=v;
        }
        a[i]=a[j+v];
    }
}
Layer Transitions 类别:Behavior 文件格式:mxp │ 69,411B 层的转换特效,这是2.0版 Clean Up FrontPage HTML 类别:Command 文件格式:mxp │ 21,799B 清除Frontpage编制的网页中的垃圾代码 Chromless Window 类别:Behavior 文件格式:mxp │ 18,257B 一种很酷的可以完全定制的弹出窗口,现在很流行 Flash Image 类别:Object 文件格式:mxp │ 3,913B 响应鼠标事件的图片渐显渐隐效果 Typewriter 类别:Behavior 文件格式:mxp │ 8,247B 让一段文字以打字的效果出现 Chromeless Window 完美修正版 类别:Behavior 文件格式:mxp │ 18,136B 窗口标题字体大小用CSS定义,完全消除乱码 ASP Random Images 类别:Command 文件格式:mxp │ 2,503B 用VBScript 在ASP文档中入随机显示的图片 Neonix Window Tools 类别:Behavior 文件格式:mxp │ 6,282B 控制浏览器窗口以不同的速度移动或缩放 Ultra Close Window 类别:Object 文件格式:mxp │ 2,342B 直接关闭窗口,不弹出确认关闭的对话框 RegExp Validator 类别:Behavior 文件格式:mxp │ 20,866B 通过一些常用的表达式验证表单的一些常见内容 RealMedia Suite 类别:Suite 文件格式:mxp │ 54,854B 在页面中入流式播放的Real 视频和音频文件 Super Email 类别:Object 文件格式:mxp │ 33,745B 创建一个完整的Email 链接,包括主题、内容等 CN Insert Greeting 类别:Object 文件格式:mxp │ 3,919B 根据不同的时段入不同的问候语 JustSo Picture Window 类别:Behavior 文件格式:mxp │ 6,347B 为你指定的图片打开一个自适应大小的弹出窗口 Sound 类别:Object 文件格式:mxp │ 1,862B 给网页添加背景音乐,可设置循环次数 Average Distribute 类别:Command 文件格式:mxp │ 2,828B 平均分布单元格的宽度或高度,很有用的件哟 Format CSS 类别:Command 文件格式:mxp │ 6,014B 规范化书写处理CSS代码(支持Dreamweaver MX) Scrollomat 类别:Behavior 文件格式:mxp │ 12,831B 给指定的层添加一个卷帘式收起的效果,可以循环 MP Flash 类别:Object 文件格式:mxp │ 14,206B 把MP3转成Flash 文件入到当前文档中 Scrolling Status Bar 类别:Object 文件格式:mxp │ 4,294B 入打字效果出现的状态栏文字 Popup Messages 类别:Behavior 文件格式:mxp │ 13,240B 当鼠标经过某个区域时,显示说明文字,样式可自定义 List / Menu Rewrite 类别:Behavior 文件格式:mxp │ 24,935B 一个下拉列表的不同选择带动另一个下拉列表的列表值改变 Insert AVI File 类别:Object 文件格式:mxp │ 3,538B 在网页中入AVI视频文件,可定制播放面板。 Scrolling Title 类别:Object 文件格式:mxp │ 4,224B 在浏览器标题栏显示滚动的页面标题 Calender Object , 类别:Object , 文件格式:mxp 作用:创建指定月份的日历,可以记录日志! 更多资源下载:http://bbs.ecaiyun.cn
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值