- 論壇徽章:
- 0
|
我利用我的公式(所包含的思路)對(duì)shellsort作了一下驗(yàn)證,我發(fā)現(xiàn)shellsort的一處,i++, i+=gap即可。
我查到的shellsort,都是i++,那么這個(gè)地方,要么我對(duì),要么我錯(cuò),我驗(yàn)證了一下,用我改過的shellsort,sort了幾次,都是成功的。
我猜測(cè)Shell本人在發(fā)明出這個(gè)算法后,認(rèn)為不會(huì)有人輕易的還原出來里面的思路,所以,他開了一個(gè)小小的玩笑。這樣,當(dāng)有人成功還原出來這個(gè)思路,這個(gè)玩笑也就結(jié)束了。
看了,這個(gè)玩笑堅(jiān)持了很多年。
現(xiàn)在大家可以幫我驗(yàn)證一下。
改過的算法如下,
- /*
- * Shellsort, revised version, Yu Fei.
- *
- * a is the name of array.
- * n is it's length.
- */
- shellsort(int *a, int n)
- {
- int gap, i, j;
- int temp;
- for(gap=n/2; gap>0; gap/=2)
- for(i=gap; i<n; i+=gap)
- for(j=i-gap; j>=0 && a[j]>a[j+gap]; j-=gap)
- {
- temp = a[j];
- a[j] = a[j+gap];
- a[j+gap] = temp;
- }
- }
復(fù)制代碼
[ 本帖最后由 勿丑于 于 2009-8-25 14:36 編輯 ] |
|