我使用Selection Sort来排序100个反向排序的整数{100,99,98 ... 1}。有多少'无用'交换将我们的选择排序执行?无用的交换是数组内容不变的地方,因为值与自身交换。
对我来说答案看起来像零?因为在每次选择排序后,我都有以下内容:{1 99 98 .... 4 3 2 100} {1 2 98 ..... 4 3 99 100}等等
然而,答案是50.这怎么可能?
答案 0 :(得分:0)
最后一次交换将是50和51.完成此交换后,将交换所有其他元素。交换将是1-100,2-99,3-98 .....,48-53,49-52,50-51 ...... 这样就完成了排序。在50次交换之后,休息所有元素都会自动排序。其余的互换是没用的。
答案 1 :(得分:0)
考虑以下列表
5 4 3 2 1
1 4 3 2 5 //交换1与5
1 2 3 4 5 //交换2与4
1 2 3 4 5 //无用交换(3与3)
1 2 3 4 5 //无用交换(4与4)
现在将此应用于您的列表。