为防止广告,目前nocow只有登录用户能够创建新页面。如要创建页面请先登录/注册(新用户需要等待1个小时才能正常使用该功能)。
希尔排序
来自NOCOW
[编辑] 基本思想
先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为dl的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2<d1重复上述的分组和排序,直至所取的增量dt=1(dt<dt-l<…<d2<d1),即所有记录放在同一组中进行直接插入排序为止。
[编辑] 程序
program shell; const n=7; var a:array[1..n]of longint; i,j,d,x:longint; begin write('Enter data:'); for i:=1 to n do read(a[i]); d:=n div 2; while d>=1 do begin for i:=d+1 to n do begin x:=a[i]; j:=i-d; while (j>0)and(x<a[j]) do begin a[j+d]:=a[j]; j:=j-d; end; a[j+d]:=x; end; d:=d div 2; end; write('output data:'); for i:=1 to n do write(a[i],' '); writeln; end.
希尔排序是一个小作品,欢迎帮助扩充这个条目。