关于希尔排序的一些问题

关于希尔排序的一些问题

1、gap的获取课件里写的一般为2,如果碰到元素个数是5或者9这种 是不是要调整为能整除的数值5的话调整为1;9调整为3 这样去分组。

2、还有一个就是在排序中视频里写的还是按照直接插入排序去循环跟前一个元素比较,但是受限于i和k的值,其实每次直接插入排序的循环次数就1次,用以下代码得出结果也没问题吧

void sort_arr(char *p, int n)

{

int i=0,j=0,k=0,temp=0;

for(k = n/2; k>=1;k = k/2){

for(i = k; i< n; i++){

if(p[i] < p[i-k]){

temp = p[i-k];

p[i-k] = p[i];

p[i] = temp;

}

}

}

}

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
大白老师 2023-07-12 22:00:27

问题1: 这里说的2是一般的情况。确实元素要是较多的话,自己灵活调整就行。
问题2:用你写的代码也可以,这个希尔排序只是常用排序的一种。只是通用排序中的一种,效率较高的还是推荐快速排序

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师