红色警戒怎么添加地图:希尔排序法属于哪一种类型的排序法

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/29 20:31:08
希尔排序法属于哪一种类型的排序法______。(B)
A. 交换类排序法
B. 插入类排序法
C. 选择类排序法
D. 建堆排序法
我的书上没有说到这个 ~~~`
有资料最好

希尔排序是插入排序的一种。
基本思想:
先取一个小于 n 的整数 d 1 作为第一个增量,把文件的全部记录分成 d 1 个组。所有距离为 d l 的倍数的记录放在同一个组中。先在各组内进行直接插人排序;然后,取第二个增量 d 2 <d 1 重复上述的分组和排序,直至所取的增量 d t =1(d t <d t-l <…<d 2 <d 1 ) ,即所有记录放在同一组中进行直接插入排序为止。
该方法实质上是一种分组插入方法。

基本思想:将整个无序序列分割成若干小的子序列分别进行插入排序。

序列分割方法:将相隔某个增量h的元素构成一个子序列。在排序过程中,逐次减小这个增量,最后当h减到1时,进行一次插入排序,排序就完成。增量序列一般采用:ht=2t-1,1≤t≤[log2n],其中n为待排序序列的长度。
-----
代码:
void prshl(p,n)

int n;double p[];

{

int k,j,i;

double t;

k=n/2;

while(k>0)

{

for(j=k;j<=n-1;j++)

{

t=p[j];i=j-k;

while((i>=0)&&(p[i]>t))

{

p[i+k]=p[i];i=i-k;

}

p[i+k]=t;

}

k=k/2;

}

return;

}

希尔排序又称缩小排序,它是对直接插入排序的一种改进方法。
基本思路:对相隔较大距离的记录进行比较,就能使记录在比较后移动较大的距离。这样能使较小的记录很快的往前移,较大的记录很快的往后移,从而提高排序速度。

应该是 D