[C] 希尔排序 →→→→→进入此内容的聊天室

来自 , 2019-05-08, 写在 C, 查看 105 次.
URL http://www.code666.cn/view/a869ccbc
  1. void ShellInsert ( S_TBL &p,int dk )
  2. { /*一趟增量为dk 的插入排序,dk 为步长因子*/
  3.         for ( i=dk+1; i<=p->length; i++ )
  4.                 if ( p->elem[i].key < p->elem[i-dk].key ) /*小于时,需elem[i]将插入有序表*/
  5.                 {
  6.                         p->elem[0]=p->elem[i]; /*为统一算法设置监测*/
  7.                         for ( j=i-dk; j>0&&p->elem[0].key < p->elem[j].key; j=j-dk )
  8.                                 p->elem[j+dk]=p->elem[j]; /*记录后移*/
  9.                         p->elem[j+dk]=p->elem[0]; /*插入到正确位置*/
  10.                 }
  11. }
  12. void ShellSort ( S_TBL *p,int dlta[]int t )
  13. { /*按增量序列dlta[0,1…,t-1]对顺序表*p 作希尔排序*/
  14.         for ( k=0; k<t; t++ )
  15.                 ShellSort ( p,dlta[k] ); /*一趟增量为dlta[k]的插入排序*/
  16. }
  17.  
  18.  

回复 "希尔排序"

这儿你可以回复上面这条便签

captcha