6种排序算法比较 算法分析

aalll 发布于 2015/12/17 08:56
阅读 297
收藏 1

【领华为电脑包】容器化时代到来!跳转机分配问题终于“有救”了!>>>

@云中散人 你好,想跟你请教个问题:

源代码是你之前自己写的 十种排序算法比较

这个代码跟我的课程设计题目要求的简直就是一模一样 里面有些问题我不懂 想找你请教一下!

1.里面的希尔算法是怎样实现的?(我看不懂)
void ShellSort() { //.希尔排序
 BeforeSort();
int i,j,h;
 i=4;
h=1;
while(i<=length) {
 i=i*2;
h=2*h+1;}
while (h!=0){
  i=h;
while(i<=length){
j=i-h;
while(j>0&&Less(j+h,j)){
Swap(j,j+h);
j=j-h;}
i++;}
h=(h-1)/2;
}
output();}
2.然后就是这整个程序的基本算法与分析 的大概框架是什么 
3.最后一个 就是如何增加随机数组啊 这个可以产生3组随机数据
 如果您有时间 就帮我看看吧 我实在是不懂 麻烦大神了!
    
加载中
0
young7
young7
问个毛线,shell排序网上的分析一搜一大堆,还用得着来这里问?
0
xpbob
xpbob
希尔排序是直接插入排序的变型,他通过分成增量包的形势,减少了交换过程,最坏情况也就和直接插入一样
xpbob
xpbob
回复 @aalll : 随机数组……和这有关系吗,你想避免重复,就做点取模和质数相关的操作
aalll
aalll
那随机数组昵?我自己改了 改成5组数据的时候,出来5组,但是有三组数据都是一样的!咋整?
0
雨落三山
雨落三山
我不是大神的啦,这只是我大一的时候整的,shell排序是基础算法,找本《数据结构》按着那行代码一行行看,绝对能看懂的,还有我这个排序数组本来就是随机生成的,但是因为随机数是按电脑系统时间生成,如果你生成两组随机数的时间相近,那么生成随机数相同的几率就很高,所以建议你生成多组随机数的时候中间加入时间间隔,或者采用其他的随机数生成方式。
aalll
aalll
真的非常感谢你能够给回复我,我只是试试,没想到真的会回复!!太感动了!!我大一的时候实训代码都是网上找的我现在大二了 还不能写代码我也是醉了,你大一就酱紫厉害耶!!!哦对我大一的时候只学习c语言班并没有学这个数据结构 !还是灰常感谢你回复我哦 !我去弄那个 随机数!
0
雨落三山
雨落三山
不好意思,那个时候代码写的太丑陋了。。。
0
雨落三山
雨落三山
各种i,j,h,p 满天飞
aalll
aalll
就是各种i,j,m,p,temp,不知道是些啥都看不懂 !!!
返回顶部
顶部