首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C / C++算法学习札记(8)-SHELL排序

2013-09-09 
C / C++算法学习笔记(8)-SHELL排序原始地址: C / C算法学习笔记(8)-SHELL排序基本思想先取一个小于n的整数

C / C++算法学习笔记(8)-SHELL排序

原始地址: C / C++算法学习笔记(8)-SHELL排序

基本思想先取一个小于n的整数d1作为第一个增量(gap),把文件的全部记录分成d1个组。所有距离为dl的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2<d1重复上述的分组和排序,直至所取的增量dt=1(dt<dt-l<;…<d2<d1),即所有记录放在同一组中进行直接插入排序为止。该方法实质上是一种分组插入方法。算法编码
1.首先设定gap = n/2 = 4于是分组
32,34  -> 32,34
43, 8    ->  8, 43
56,54  -> 54,56
99,76  -> 76,99
数列变成 32,8,54,76,34,43,56,99

2.gap = gap/2 = 2 于是分组
32,54,34,56 -> 32,34,54,56
8,76,43,99    -> 8,43,76,99
于是数列变成 32,8,34,43,54,76,56,99

3.gap = gap/2 = 1于是分组
32,8,34,43,54,76,56,99

->

8,32,34,43,54,56,76,99
gap=1结束……


 

热点排行