3、设线性表中每个元素有两个数据项
k
1
k_1
k1和
k
2
k_2
k2,现对线性表按以下规则进行排序:先看数据项
k
1
k_1
k1,
k
1
k_1
k1值小的元素在前,大的元素在后;在
k
1
k_1
k1值相同的情况下,再看
k
2
k_2
k2,
k
2
k_2
k2值小的在前,大的元素在后。满足这种要求的排序方法是()。
A:先按
k
1
k_1
k1进行直接插入排序,再按
k
2
k_2
k2进行简单选择排序
B:先按
k
2
k_2
k2进行直接插入排序,再按
k
1
k_1
k1进行简单选择排序
C:先按
k
1
k_1
k1进行简单选择排序,再按
k
2
k_2
k2进行直接插入排序
D:先按
k
2
k_2
k2进行简单选择排序,再按
k
1
k_1
k1进行直接插入排序
解析
本题思路来自基数排序的LSD,首先应该确定
k
1
k_1
k1、
k
2
k_2
k2的排序顺序,若先排
k
1
k_1
k1再排
k
2
k_2
k2,则排序结果不符合题意,排除A和C。
再考虑算法的稳定性,当
k
2
k_2
k2排好序后,再对
k
1
k_1
k1排序,若对
k
1
k_1
k1排序采用的算法是不稳定的,则对于
k
1
k_1
k1相同而
k
2
k_2
k2不同的元素可能会改变相对次序,从而不一定能满足题设要求。