对给定的一组关键字{23,13,17,21,30,60,58,28,30,90}, 【问题】试写出用以下算法每一趟排序的结果 (1)快速排序 (2)希尔排序(d=5,2,1) (3)基数排序 (4)归并排序
时间: 2023-08-19 17:17:16 浏览: 147
给定的一组关键字为{23,13,17,21,30,60,58,28,30,90}。
(1)快速排序
以第一个元素23为基准,将小于23的放在左边,大于23的放在右边,得到以下结果:
{13, 17, 21, 23, 30, 60, 58, 28, 30, 90}
左边的序列{13, 17, 21}进行快速排序,以17为基准:
{13, 17, 21}
右边的序列{30, 60, 58, 28, 30, 90}进行快速排序,以60为基准:
{30, 58, 28, 30}
以28为基准:
{28}
以58为基准:
{30, 30}
得到以下结果:
{13, 17, 21, 23, 28, 30, 30, 58, 60, 90}
(2)希尔排序(d=5,2,1)
d=5时,序列被分成了两组{23, 60}和{13, 17, 21, 58, 28, 30, 30, 90},进行插入排序,得到:
{23, 30, 21, 28, 13, 60, 30, 58, 17, 90}
d=2时,序列被分成了五组{23,21,13,30,17}、{60,28,90}、{30,58}、{...}、{...},进行插入排序,得到:
{13, 17, 21, 23, 28, 30, 30, 58, 60, 90}
d=1时,进行插入排序,得到:
{13, 17, 21, 23, 28, 30, 30, 58, 60, 90}
(3)基数排序
以个位数为关键字进行排序,得到以下结果:
{60, 30, 21, 23, 13, 30, 90, 58, 17, 28}
再以十位数为关键字进行排序,得到以下结果:
{13, 17, 21, 23, 28, 30, 30, 58, 60, 90}
排序完成。
(4)归并排序
将序列分成两半:
{23, 13, 17, 21, 30}和{60, 58, 28, 30, 90}
对左边的序列进行归并排序:
{13, 17, 21, 23, 30}
对右边的序列进行归并排序:
{28, 30, 58, 60, 90}
将排好序的左右两个序列合并:
{13, 17, 21, 23, 28, 30, 30, 58, 60, 90}
排序完成。
阅读全文