首页 > 其他 > 详细

20140527 希尔排序

时间:2014-06-07 03:46:30      阅读:567      评论:0      收藏:0      [点我收藏+]
bubuko.com,布布扣
#include<stdio.h>
void ShellSort(int *a,int length)
{
    int jump=length; int temp=0; int change=1;
    while(jump>0)  //while1
    {
        jump=jump/2;
        change=1;
        /************************************************************************/
        /* 以下while循环表示一个固定步长下的排序
            原始是序列:    3    2    4    7    5    9    6
            第1个for后:    3    2    4    6    5    9    7 chang=1  
            第2个for后:    3    2    4    6    5    9    7    change=0 跳出while2
            步长jump=3/2变为1:
            第1个for之后:    2    3    4    5    6 7 9  chang=1
            第2个for之后:    2    3    4    5    6 7 9  chang=0  跳出while2
            jump=1/2=0:跳出while1  希尔排序结束
        */
        /************************************************************************/
        while(1==change&&jump!=0)//while2
        {
            change=0;
            for(int i=0;i<length-jump;i++)
            {
                if(a[i+jump]<a[i])
                {
                    temp=a[i+jump];
                    a[i+jump]=a[i];
                    a[i]=temp;
                    change=1;
                }
            }
        }
    }
}
void display(int a[],int n)
{
    int i=0;
    while(i<n)
    {
        printf("%d ",a[i]);
        i++;
    }
}
void main()
{
    int a[]={3,2,4,7,5,9,6};
    int length=sizeof(a)/4;
    ShellSort(a,length);
    display(a,length);
}
bubuko.com,布布扣

20140527 希尔排序,布布扣,bubuko.com

20140527 希尔排序

原文:http://www.cnblogs.com/yexuannan/p/3756108.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!