对下列一组关键字 (46,58,15,45,90,18,10,62, 46’,58’,15’,45’,90’,18’,10’,62’) (1)写出所有的逆序对 (2)写出直接插入排序过程 (3)写出希尔排序过程(自选增量序列并说明选择的原因) (4)写出快速排序过程(自选主元并说明选择的原因) (5)写出归并排序过程
时间: 2023-12-13 12:04:44 浏览: 64
七种排序算法(包括直接插入排序,折半插入排序,希尔排序,冒泡排序,快速排序,简单选择排序,归并排序)
5星 · 资源好评率100%
好的,让我来回答您的问题:
(1) 所有的逆序对如下:
(46', 46), (58', 46), (58', 46'), (15', 10'), (15', 18'), (15', 45'), (15', 45), (15', 46'), (15', 46), (45', 10'), (45', 18'), (45', 46'), (45', 46), (45', 15'), (45', 15), (90', 10'), (90', 18'), (90', 45'), (90', 45), (90', 46'), (90', 46), (90', 15'), (90', 15), (90', 58'), (90', 58), (18', 10'), (18', 46'), (18', 46), (18', 45'), (18', 45), (18', 15'), (18', 15), (18', 58'), (18', 58), (10', 46'), (10', 46), (10', 45'), (10', 45), (10', 15'), (10', 15), (10', 58'), (10', 58), (62', 10'), (62', 18'), (62', 45'), (62', 45), (62', 46'), (62', 46), (62', 15'), (62', 15), (62', 58'), (62', 58)
(2) 直接插入排序过程如下:
第1趟排序:46 58 15 45 90 18 10 62 46’ 58’ 15’ 45’ 90’ 18’ 10’ 62’
第2趟排序:15 46 58 45 90 18 10 62 15’ 46’ 58’ 45’ 90’ 18’ 10’ 62’
第3趟排序:15 45 46 58 90 10 18 62 15’ 45’ 46’ 58’ 90’ 10’ 18’ 62’
第4趟排序:10 15 18 45 46 58 62 90 10’ 15’ 18’ 45’ 46’ 58’ 62’ 90’
第5趟排序:10 10’ 15 15’ 18 18’ 45 45’ 46 46’ 58 58’ 62 62’ 90 90’
(3) 希尔排序过程如下(采用希尔增量,即增量序列为 n/2, n/4, ..., 1):
增量为8:18 46 15 45 62 10 58 90 18’ 46’ 15’ 45’ 62’ 10’ 58’ 90’
增量为4:10 15 18 45 46 58 62 90 10’ 15’ 18’ 45’ 46’ 58’ 62’ 90’
增量为2:10 15 18 45 46 58 62 90 10’ 15’ 18’ 45’ 46’ 58’ 62’ 90’
增量为1:10 10’ 15 15’ 18 18’ 45 45’ 46 46’ 58 58’ 62 62’ 90 90’
(4) 快速排序过程如下(选取中间位置的元素作为主元):
46 58 15 45 90 18 10 62 46’ 58’ 15’ 45’ 90’ 18’ 10’ 62’
选取主元 45,进行一趟快排,得到:
15 18 10 45 46 58 90 62 15’ 18’ 10’ 45’ 46’ 58’ 90’ 62’
再选取主元 58,进行一趟快排,得到:
15 18 10 45 46 58 90 62 15’ 18’ 10’ 45’ 46’ 58’ 90’ 62’
选取主元 46,进行一趟快排,得到:
15 18 10 45 46 58 90 62 15’ 18’ 10’ 45’ 46’ 58’ 90’ 62’
选取主元 15,进行一趟快排,得到:
10 15 18 45 46 58 90 62 10’ 15’ 18’ 45’ 46’ 58’ 90’ 62’
选取主元 62,进行一趟快排,得到:
10 15 18 45 46 58 62 90 10’ 15’ 18’ 45’ 46’ 58’ 62’ 90’
选取主元 18,进行一趟快排,得到:
10 15 18 45 46 58 62 90 10’ 15’ 18’ 45’ 46’ 58’ 62’ 90’
选取主元 90,进行一趟快排,得到:
10 15 18 45 46 58 62 90 10’ 15’ 18’ 45’ 46’ 58’ 62’ 90’
(5) 归并排序过程如下:
将序列分为两个子序列:46 58 15 45 90 18 10 62 和 46’ 58’ 15’ 45’ 90’ 18’ 10’ 62’
对每个子序列进行归并排序:
46 58 15 45 90 18 10 62 -> 10 15 18 45 46 58 62 90
46’ 58’ 15’ 45’ 90’ 18’ 10’ 62’ -> 10’ 15’ 18’ 45’ 46’ 58’ 62’ 90’
将两个有序子序列归并为一个有序序列:
10 15 18 45 46 58 62 90 10’ 15’ 18’ 45’ 46’ 58’ 62’ 90’ -> 10 10’ 15 15’ 18 18’ 45 45’ 46 46’ 58 58’ 62 62’ 90 90’
阅读全文