第15周 “知原理”检验项目 3

/*
 *Copyright(c) 2015,烟台大学计算机与控制工程学院
 *All rights reserved.
 *文件名称:test.cpp
 *作    者:徐群壮
 *完成日期:2015.9.7
 *版 本 号:v1.0
 *
 *问题描述:给定序列{57,40,38,11,13,34,48,75,6,19,9,7}
            (1)请描述用直接插入排序算法完成排序的过程
<span style="white-space:pre">	</span>    (2)请描述用希尔排序算法完成排序的过程

 *输入描述:
 *程序输出:
*/


直接插入排序算法过程:

排序思路:把给定序列分为有序区和无序区,刚开始时有序区只有57这个元素。接下来的操作
是将无序区的第一个元素40,插入到前面有序区的合适位置当中去,使有序区刷新。
具体过程如下:
初始关键字: (57),40,38,11,13,34,48,75,6,19,9,7
     第1趟: (40,57),38,11,13,34,48,75,6,19,9,7
     第2趟: (38,40,57),11,13,34,48,75,6,19,9,7
     第3趟: (11,38,40,57),13,34,48,75,6,19,9,7
     第4趟: (11,13,38,40,57),34,48,75,6,19,9,7
     第5趟: (11,13,34,38,40,57),48,75,6,19,9,7
     第6趟: (11,13,34,38,40,48,57),75,6,19,9,7
     第7趟: (11,13,34,38,40,48,57,75),6,19,9,7
     第8趟: (6,11,13,34,38,40,48,57,75),19,9,7
     第9趟: (6,11,13,19,34,38,40,48,57,75),9,7
     第10趟:(6,9,11,13,19,34,38,40,48,57,75),7
     第11趟: (6,7,9,11,13,19,34,38,40,48,57,75)


希尔排序算法过程:

排序思路:先取定一个小于n的整数作为d1作为第一个增量,把表的全部记录分为
d1个组,所有距离为d1的倍数的记录放在同一组中,在各组内进行直接插入排序;
取第二个增量d2(d2<d1),重复上述的分组和排序,直至所取的增量为1,即所有
的记录放在同一组中进行直接插入排序为止。
具体过程如下:
              57,40,38,11,13,34,48,75,6,19,9,7
d1=3          11,40,38,19,13,34,48,75,6,57,9,7 (将距离为3的倍数的记录放在同一组内,即将组内57,11,48,19进行直接插入排序)
d2=2          6,40,9,19,11,34,13,75,38,57,48,7 (将距离为3的倍数的记录放在同一组内,即将组内11,38,13,48,6,9进行直接插入排)
d3=1          6,7,9,11,13,19,34,38,40,48,57,75  (d=1时,进行直接插入排序)




知识点总结及学习心得:
希尔排序在每趟排序完成后,数据越来越接近有序,d的选取可以根据实际情况选取的灵活一点。

你可能感兴趣的:(第15周 “知原理”检验项目 3)