正在加载图片...
件的全部记录分成d1个组,所有距离为 d1倍数的记录放在同一个组中,再每一个 组织结进行插入排序;然后,取第二个增 量d2<dl重复上述分组和排序,直至所取 得增量dt=l(dt<dt-1..<d), 及所有记录放入同一组中进行直接插入排 序为止 算法实现] ∥按字典顺序将这些国家进行排序 main string r[ ring temp Lhncha scanf(&n); printf( input country nameIn); for(I=0, K<n; I scanf(rD: h while(h>0) h=h/2;∥取增量h2 change=false for(I=0; K<n-h, 1++) if(r①r+h])∥比较 temp=r[/交换 r[=r[I+h]; r[I+h]= change=true/置已交换标志件的全部记录分成 d1 个组,所有距离为 d1 倍数的记录放在同一个组中,再每一个 组织结进行插入排序;然后,取第二个增 量 d2<d1 重复上述分组和排序,直至所取 得增量 dt=1(dt<dt-1…<d1), 及所有记录放入同一组中进行直接插入排 序为止。 [算法实现] // 按字典顺序将这些国家进行排序 main() { string r[]; string temp; int I,h,n,change; scanf(&n); printf(“input country name\n”); for(I=0;I<n;I++) scanf(r[I]); h=n; while(h>0) { h=h/2;//取增量 h/2 do { change=false; for(I=0;I<n-h;I++) if(r[I]>r[I+h])//比较 {temp=r[I];//交换 r[I]=r[I+h]; r[I+h]=temp; change=true;//置已交换标志
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有