10内部排序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第10章内部排序

10.1以关键码序列

(503, 087, 512, 061, 908, 170, 897, 275, 653, 426)为例,手工执行以下排序算法,写出每一趟排序结束时的关键码状态:

(1)直接插入排序(2) 希尔排序(d[1]=5, d[2]=3, d[3]=1) (3) 快速排序(第一个记录为基准记录) (4) 堆排序

(5) 归并排序(6) 基数排序

解答:

(1)直接插入排序:

第一趟:

087,503, 512, 061, 908, 170, 897, 275, 653, 426

第二趟:

087,503, 512, 061, 908, 170, 897, 275, 653, 426

第三趟:

061,087,503, 512, 908, 170, 897, 275, 653, 426

第四趟:

061,087,503, 512, 908, 170, 897, 275, 653, 426

第五趟:

061,087, 170, 503, 512, 908, 897, 275, 653, 426

第六趟:

061,087, 170, 275, 503, 512, 897, 908, 653, 426

第八趟:

061,087, 170, 275, 503, 512, 653, 897, 908, 426

第九趟:

061,087, 170, 275, 426, 503, 512, 653, 897, 908

(2)希尔排序

(d[1]=5, d[2]=3, d[3]=1)

第一趟:

170,087, 275, 061, 426, 503, 897, 512, 653, 908

第二趟:

061,087, 275, 170, 426, 503, 897, 512, 653, 908

第三趟:

061,087, 170, 275, 426, 503, 512, 653, 897, 908

(3) 快速排序(第一个记录为基准记录)

第一趟:

(426,087,275,061,170) 503(897,908,653,512)

第二趟:

(170, 087,275,061)426, 503(512,653)897(908)

第三趟:

(061,087)170(275) 426, 503,512(653) 897, 908

第四趟:

061,087, 170, 275, 426, 503, 512, 653, 897, 908

(4) 堆排序(小根堆为例)

建堆:

061, 087, 170, 275, 426,512, 897, 503, 653, 908

第一趟:(输出061)087, 275, 170, 503, 426,512,897,653

第二趟:(输出087)170, 275, 512, 503, 426, 653, 897,9 08

第三趟:(输出170)275, 406, 512, 503, 908, 653, 897

第四趟:(输出275)406, 503, 512, 897, 908, 653

第五趟:(输出406)503, 653, 512, 897, 908

第六趟:(输出503)512, 653, 908, 897

第七趟:(输出512)653, 897, 908

第八趟:(输出653)897, 908

第九趟:(输出897)908

(5) 归并排序

第一趟:

(087, 503)(061, 512)(170, 908)(275, 897)(426, 653)

第二趟:

(061, 087, 503, 512)(170, 275, 897, 908)(426, 653)

第三趟:

(061, 087, 170, 275, 503, 512, 897, 908) (426, 653)

第四趟:

061,087, 170, 275, 426, 503, 512, 653, 897, 908

(6)简单选择排序

第一趟:

061,087,512,503,908,170,897,275,653,426

第二趟:

061,087,512,503,908,170,897,275,653,426

第三趟:

061,087,170,503,908,512,897,275,653,426

第四趟

061,087,170,275,908,512,897,503,653,426

第五趟

061,087,170,275,426,512,897,503,653,908

第六趟

061,087,170,275,426,503,897,512,653,908

第七趟

061,087,170,275,426,503,512,653,897,908

10.7不难看出,对长度为n的记录序列进行快速排序时,所需进行的比较次数依赖于这n个元素的初始排列。

(1)n=7时在最好情况下需进行多少次比较?请说明理由。

(2)对n=7给出一个最好情况的初始排列实例。

解:最好的情况是每次都能均匀的划分序列.

例如 4,1,3,2,6,5,7,每次使用序列的第一个元素做枢轴.比较总次数为10次,交换3次,具体如下:

第一次枢轴为4,序列划分为{2,1,3},4,{6,5,7}

相关文档
最新文档