13.3 选择排序
将整副牌洗乱后,你需要一个恢复排列顺序的方法。具有讽刺意义的是,有一种排序算法与洗牌算法类似。该排序算法被称为选择排序(selection sort),因为它反复遍历数组,每次都在余下的牌中选择最小(或最大)的那张。
在第一次迭代中,我们找到最小的牌,并将其与索引 0 处的牌互换位置;在第 i 次迭代中,我们在索引 i 右边的牌中找出最小的那张,并将其与索引 i 处的牌互换位置。下面是选择排序的伪代码:
public void selectionSort() {for each index i {// 在整个数组或索引i右边的范围内找到最小的那张牌// 将索引i处的牌与找到的最小的牌互换位置}}
同样,这些伪代码可以帮助你设计辅助方法。在这个算法中,我们可以重用 swapCards,因此只需要一个找到最小牌的方法——我们称之为 indexLowest。
本章末尾有一个练习,要求你编写辅助方法 indexLowest,并用它实现 selectionSort。
