因为觉得i,j,++,- -的太烦了
只用一个循环(确定本次参与排序的元素中最小元素的index)
剩下的由递归调用来减少每次参与排序的元素数量。
直到还剩下最后一个元素时结束递归。
思路:
第一次调用:从第0个元素(递归的参数)开始,直到最后一个元素,找到最小元素对应的index。然后和第0个元素swap。
第二次调用:从第1个元素开始(递归的参数),直到最后一个元素,找到最小元素对应的index。然后和第1个元素swap。
第三次调用:从第2个元素开始(递归的参数),直到最后一个元素,找到最小元素对应的index。然后和第2和元素swap。
。。。。。。
最后一次调用,此时只剩下了最后一个元素,就直接返回了。递归的结束条件,不谈!!!
可以看到,递归的第二个参数,就是本次递归调用找到最小值后,要和这个参数对应的元素swap。
递归调用是一层一层往下,每往下调用一层,问题的规模就小一点。返回的时候是一层一层向上返回的。
因为每次递归调用都会把数组(第一个参数)传进去,并进行元素的swap,所以方法是没有返回值的。
package sort;
/**
* 选择排序的递归写法
*/
public class SelectSort {
public static void sortByRecursive(