问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

希尔排序法中距离为d是什么意思

发布网友 发布时间:2022-04-25 06:43

我来回答

3个回答

热心网友 时间:2022-04-22 18:37

属于插入类排序,是将整个无序列分割成若干小的子序列分别进行插入排序
  排序过程:先取一个正整数d1<n,把所有序号相隔d1的数组元素放一组,组内进行直接插入排序;然后取d2<d1,重复上述分组和排序操作;直至di=1,即所有记录放进一个组中排序为止
  初始:d=5
  49 38 65 97 76 13 27 49* 55 04
  49 13
  |-------------------|
  38 27
  |-------------------|
  65 49*
  |-------------------|
  97 55
  |-------------------|
  76 04
  |-------------------|
  一趟结果
  13 27 49* 55 04 49 38 65 97 76
  d=3
  13 27 49* 55 04 49 38 65 97 76
  13 55 38 76
  |------------|------------|------------|
  27 04 65
  |------------|------------|
  49* 49 97
  |------------|------------|
  二趟结果
  13 04 49* 38 27 49 55 65 97 76
  d=1
  13 04 49* 38 27 49 55 65 97 76
  |----|----|----|----|----|----|----|----|----|
  三趟结果
  04 13 27 38 49* 49 55 65 76 97
  --------------------------------------------------------------------------------------------
  例如对503,17,512,908,170,897,275,653,462,154,509,612,677,765,703,94排序的C语言算法
  ================================================
  功能:希尔排序
  输入:数组名称(也就是数组首地址)、数组中元素个数
  ================================================
  */
  /*
  ====================================================
  算法思想简单描述:
  在直接插入排序算法中,每次插入一个数,使有序序列只增加1个节点,
  并且对插入下一个数没有提供任何帮助。如果比较相隔较远距离(称为
  增量)的数,使得数移动时能跨过多个元素,则进行一次比较就可能消除
  多个元素交换。D.L.shell于1959年在以他名字命名的排序算法中实现
  了这一思想。算法先将要排序的一组数按某个增量d分成若干组,每组中
  记录的下标相差d.对每组中全部元素进行排序,然后再用一个较小的增量
  对它进行,在每组中再进行排序。当增量减到1时,整个要排序的数被分成
  一组,排序完成。
  下面的函数是一个希尔排序算法的一个实现,初次取序列的一半为增量,
  以后每次减半,直到增量为1。
  希尔排序是不稳定的。
  =====================================================
  */
  void shell_sort(int *x, int n)
  {
  int h, j, k, t;
  for (h=n/2; h>0; h=h/2) /*控制增量*/
  {
  for (j=h; j<n; j++) /*这个实际上就是上面的直接插入排序*/
  {
  t = *(x+j);
  for (k=j-h; (k>=0 && t<*(x+k)); k-=h)
  {
  *(x+k+h) = *(x+k);
  }
  *(x+k+h) = t;
  }
  }
  }
  void main()
  {
  #define MAX 16
  int *p, i, a[MAX];
  /*录入测试数据*/
  /*
  p = a;
  printf("Input %d number for sorting :\n",MAX);
  for (i=0; i<MAX; i++)
  {
  scanf("%d",p++);
  }
  *可以自己输入数据
  */
  a[] = {503,17,512,908,170,897,275,653,462,154,509,612,677,765,703,94};
  printf("\n");
  //503,17,512,908,170,897,275,653,462,154,509,612,677,765,703,94
  /*测试排序*/
  p = a;
  shell_sort(p,MAX);
  /**/
  for (p=a, i=0; i<MAX; i++)
  {
  printf("%d ",*p++);
  }
  printf("\n");
  system("pause");
  }
  pascal算法程序:
  program xepx;
  const n=7;
  type
  arr=array[1..n] of integer;
  var
  a:arr;
  i,j,t,d:integer;
  bool:boolean;
  begin
  write('input data:');
  for i:=1 to n do read(a);
  writeln;
  d:=n;
  while d>1 do
  begin
  d:=d div 2;
  for j:=d+1 to n do
  begin
  t:=a[j];i:=j-d;
  while (i>0) and (a>t) do
  begin a[i+d]:=a;i:=i-d;end;
  a[i+d]:=t;
  end;
  end;
  write('output data:');
  for i:=1 to n do write(a:6);
  writeln;
  end.

热心网友 时间:2022-04-22 19:55

希尔排序(Shell Sort)是插入排序的一种。因D.L.Shell于1959年提出而得名。

先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为dl的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2<d1重复上述的分组和排序,直至所取的增量dt=1(dt<dt-l<…<d2<d1),即所有记录放在同一组中进行直接插入排序为止。

热心网友 时间:2022-04-22 21:30

1 to n do write(a:6);
  writeln;
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...括号内为杂质),所选用的试剂(足量)及操作方法均正确的是... ...所含的杂质以及除去这些杂质选用的试剂或操作方法,正确的是( ) 物... 佳能相机wifi传图片到电脑怎样将canon相机上的图片通过wifi导入电脑 佳能无线连电脑预览画面怎样将canon相机上的图片通过wifi导入电脑 支票丢了可以补办吗啊 存的支票找不到了怎么办 ...的时候总是连贯不起来,就像在一个单词一个单词的念一样。 每当我看见那些人用英语很自然交谈的时候,我就觉得他们非常的酷,我 每当听到一个英语长句,我的脑袋就发懵,总是仅仅听到其中几个单词 天玑800U和骁龙765G处理器对比有多大差距? 大人喝羊奶过期2个月还可以喝吗 关于希尔排序和增量的问题。 C语言程序设计 排序题 羊奶过期三个月左右还可以喝吗?没有结块没有变味儿,两百多买的扔了觉得可惜了。 买得羊奶过期两天还能喝吗? 带包装羊奶过期了但味道没变还能喝吗? 我们家的羊奶粉过期了还可以喝吗? 羊奶过期了两天还可以喝吗 免洗手消毒液需20秒以上作用时间,这是为什么? 百能免洗手消毒凝胶对新冠有用吗? 百能免洗手消毒液有什么好处? 证券账户的功能有哪些? 证券账户按市场分为哪些 证券投资者开立证券买卖的账户包括? 证券账户按用途可以分为哪些 证券类账户包括哪些? 我买的肉苁蓉怎么会咸? 电池充不满电vivos7 vivos7不能充电能修吗? vivoS7充不进去电是什么情况 羊奶粉过来6个月期,但是是独立包装还可以吃吗? 微分中的d是什么意思 羊奶过期怎么办? 希尔排序(缩小增量排序)里面的增量d一般是n&#47;2,我想问要是n=11.为什么d=5,而进行第二趟时增量又变为3 希尔排序增量怎么确定 大学物理题目……… 数据结构C++版一般的考试形式是什么? 数据结构算法设计C++实现 纯牛奶纯羊奶过期一天两天喝没事吧? 最快的排序方法和题目. 羊奶是新鲜的吗,会不会收到过期变质的? sql server 2008中id如何设为自增 高数中的那个“d”是什么意思?比如物理上的“d(s)/d(t)”怎么解读? PID调整中 P i D 各代表什么?(详细) P值设大后, OP输出是增大还是减小啊? 我老公在外面有了小三现在天天不回家,我想和他离婚可是打电话不回发短信也不回我该怎么办? 软件工程的题 已婚男人出轨。被发现。回归家庭。小三给他发信息。他不回。打电话直接挂了。也不和他说清楚? 使用sql语句在d:&#92;学号+姓名的文件夹里创建数据库stums,设置数据文件的初始大 高分求以下数据结构题答案,在线等 为什么我给一男老婆发信息说他老公出轨,对方为什么不回我?