对下列一组关键字 (46,58,15,45,90,18,10,62,46',58',15',45',90',18',10',62') (1)写出所有的逆序对 (2)写出直接插入排序过程 (3)写出希尔排序过程(自选增量序列并说明选择的原因) (4)写出快速排序过程(自选主元并说明选择的原因) (5)写出归并排序过程
时间: 2023-09-09 20:13:34 浏览: 64
(1) 逆序对有:(46',46), (46',45), (46',18), (46',15), (46',10), (58',45), (58',18), (58',15), (58',10), (58',46), (58',46'), (62',10), (62',18), (62',15), (62',45), (62',46), (62',46'), (62',58), (62',58'), (90',10), (90',18), (90',15), (90',45), (90',46), (90',46'), (90',58), (90',58'), (90',62), (90',62')
(2) 直接插入排序过程:
首先将 46 插入到一个空数组中,然后将 58 插入到 46 的后面,得到 [46, 58]。接着将 15 插入到 46 的前面,得到 [15, 46, 58]。将 45 插入到 46 的前面,得到 [15, 45, 46, 58]。同理插入 90,得到 [15, 45, 46, 58, 90]。插入 18,得到 [15, 18, 45, 46, 58, 90]。插入 10,得到 [10, 15, 18, 45, 46, 58, 90]。插入 62,得到 [10, 15, 18, 45, 46, 58, 62, 90]。最后插入 46',得到 [10, 15, 18, 45, 46', 46, 58, 62, 90,]。插入 58',得到 [10, 15, 18, 45, 46', 46, 58, 58', 62, 90]。插入 15',得到 [10, 15, 15', 18, 45, 46', 46, 58, 58', 62, 90]。插入 45',得到 [10, 15, 15', 18, 45, 45', 46', 46, 58, 58', 62, 90]。插入 90',得到 [10, 15, 15', 18, 45, 45', 46', 46, 58, 58', 62, 90, 90']。插入 18',得到 [10, 15, 15', 18, 18', 45, 45', 46', 46, 58, 58', 62, 90, 90']。插入 10',得到 [10, 10', 15, 15', 18, 18', 45, 45', 46', 46, 58, 58', 62, 90, 90']。插入 62',得到 [10, 10', 15, 15', 18, 18', 45, 45', 46', 46, 58, 58', 62, 62', 90, 90']
(3) 希尔排序过程:
选择增量序列为 [5, 3, 1],首先对增量 5 进行排序,得到 [18, 10, 46', 15', 45', 90', 58', 62'] [46, 15, 45, 18, 10, 62, 46', 58, 90]。然后对增量 3 进行排序,得到 [18, 10, 46', 45', 90', 62', 15', 58'] [15, 10, 45, 18, 46, 62, 46', 58, 90]。最后对增量 1 进行排序,得到 [10, 15, 18, 45, 46, 46', 58, 62, 90] [10', 15', 18', 45', 46', 46, 58', 62', 90']
(4) 快速排序过程:
选择主元为 46,首先将小于主元的数放到左边,大于主元的数放到右边,得到 [18, 10, 15, 45, 46, 58, 62, 90, 46', 58', 15', 45', 90', 18', 10', 62']。然后对左右两边分别进行快速排序,左半部分排序结果为 [10, 15, 18, 45, 46, 58, 62], 右半部分排序结果为 [10', 15', 18', 45', 46', 58', 62', 90', 46', 58', 15', 45', 90', 18']. 对左边和右边分别进行递归快速排序,最终得到 [10, 15, 18, 45, 46, 58, 62, 90, 10', 15', 18', 45', 46', 58', 62', 46', 58', 15', 45', 90', 18']。
(5) 归并排序过程:
将数组分成两半,分别对两半进行排序,得到 [15, 45, 46, 58, 46', 58', 15', 45', 90', 18'] 和 [10, 18, 62, 10', 18', 62', 90, 46, 58]. 然后将两个有序数组合并,得到 [10, 15, 18, 45, 46, 58, 62, 90, 10', 15', 18', 45', 46', 58', 62', 46', 58', 15', 45', 90', 18'].
阅读全文