永发信息网

希尔排序怎么排啊

答案:1  悬赏:20  手机版
解决时间 2021-02-15 11:30
  • 提问者网友:骨子里的高雅
  • 2021-02-14 12:05
希尔排序怎么排啊
最佳答案
  • 五星知识达人网友:封刀令
  • 2021-02-14 12:29
下标 0  1  2  3  4  5  6  7  8  9
数组 49 38 65 97 26 13 27 50 55 4 (原数组)

增量=5, [0]=49与[5]=13为一组,互换为 13 49 (排序是从小到大)
        [1]=38与[6]=27为一组,互换为 27 38 
        [2]=65与[7]=50为一组,互换为 50 65
        [3]=97与[8]=55为一组,互换为 55 97
        [4]=26与[9]=4 为一组,互换为 4 26

增量=5的排序结果是: 13 27 50 55 4 49 38 65 97 26


下标  0  1  2  3  4  5  6  7  8  9
数组  13 27 50 55 4  49 38 65 97 26 (第一趟之后)

增量=2, [0]=13,[2]=50,[4]=4,[6]=38,[8]=97为一组,
        互换之后,[0]=4,[2]=13,[4]=38,[6]=50,[8]=97

        [1]=27,[3]=55,[5]=49,[7]=65,[9]=26为一组,
        互换之后,[1]=26,[3]=27,[5]=49,[7]=55,[9]=65

增量=2的排序结果是: 4 26 13 27 38 49 50 55 97 65


下标  0  1  2  3  4  5  6  7  8  9
数组  4  26 13 27 38 49 50 55 97 65 (第二趟之后)

增量=1, 数组里的10个数据作为一组,其中,
        [1]=26有[2]=13互换为 13 26
        [8]=97与[9]=65互换为 65 97

增量=1的排序结果是: 4 13 26 27 38 49 50 55 65 97


// C语言测试代码
// 希尔排序法 (自定增量)
#include 
#include 

void printData(int data[],int n) //打印数组
{
    int i;
    for(i=0;i    {
        printf("%d ",data[i]);
    }
    printf("
");
}

//希尔排序(从小到大)
void shell(int data[],int count)
{
    int offset_a[3]={5,2,1}; //每一趟的增量
    int len;
    int pos;
    int offset;
    int i,j;
    int temp;
    len=sizeof(offset_a)/sizeof(int);
    for(i=0;i    {
        offset=offset_a[i];
        for(j=offset;j        {
            temp=data[j];
            pos=j-offset;
            while(temp=0 && j<=count)
            {
                data[pos+offset]=data[pos];
                pos=pos-offset;
            }
            data[pos+offset]=temp;
        }
        printf("增量=%d,排序结果: ",offset);
        printData(data,count);
    }
}

int main(void)
{
    int data[]={49,38,65,97,26,13,27,50,55,4};
    int count;
    count=sizeof(data)/sizeof(int);
    printf("原数组: ");
    printData(data,count);

    shell(data,count);

    printf("
最后的排序结果: ");
    printData(data,count);
    return 0;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯