选择排序算法交换

时间:2016-08-26 20:18:29

标签: sorting

  

我使用Selection Sort来排序100个反向排序的整数{100,99,98 ... 1}。有多少'无用'交换将我们的选择排序执行?无用的交换是数组内容不变的地方,因为值与自身交换。

对我来说答案看起来像零?因为在每次选择排序后,我都有以下内容:{1 99 98 .... 4 3 2 100}                       {1 2 98 ..... 4 3 99 100}等等

然而,答案是50.这怎么可能?

2 个答案:

答案 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)

现在将此应用于您的列表。