c语言中希尔排序的程序,希尔排序实例程序(C程序)

使用C语言来编写 shell 排序程序实例,如下所示:

#include

#include

#define MAX 7

int intArray[MAX] = {4,6,3,2,1,9,7};

void printline(int count){

int i;

for(i = 0;i

printf("=");

}

printf("=\n");

}

void display(){

int i;

printf("[");

// navigate through all items

for(i = 0;i

printf("%d ",intArray[i]);

}

printf("]\n");

}

void shellSort(){

int inner, outer;

int valueToInsert;

int interval = 1;

int elements = MAX;

int i = 0;

while(interval <= elements/3) {

interval = interval*3 +1;

}

while(interval > 0) {

printf("iteration %d#:",i);

display();

for(outer = interval; outer < elements; outer++) {

valueToInsert = intArray[outer];

inner = outer;

while(inner > interval -1 && intArray[inner - interval] >= valueToInsert) {

intArray[inner] = intArray[inner - interval];

inner -= interval;

printf(" item moved :%d\n",intArray[inner]);

}

intArray[inner] = valueToInsert;

printf(" item inserted :%d, at position :%d\n",valueToInsert,inner);

}

interval = (interval -1) /3;

i++;

}

}

int main() {

printf("Input Array: ");

display();

printline(50);

shellSort();

printf("Output Array: ");

display();

printline(50);

return 1;

}

如果我们编译并运行上述程序那么这将产生以下结果 –

Input Array: [4, 6, 3, 2, 1, 9, 7]

==================================================

iteration 0#: [4, 6, 3, 2, 1, 9, 7]

item moved :4

item inserted :1, at position :0

item inserted :9, at position :5

item inserted :7, at position :6

iteration 1#: [1, 6, 3, 2, 4, 9, 7]

item inserted :6, at position :1

item moved :6

item inserted :3, at position :1

item moved :6

item moved :3

item inserted :2, at position :1

item moved :6

item inserted :4, at position :3

item inserted :9, at position :5

item moved :9

item inserted :7, at position :5

Output Array: [1, 2, 3, 4, 6, 7, 9]

==================================================

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值