算法思想
将待排序序列分成两部分,一部分为有序序列,另一部分为无序序列。第一趟:从a[0]到a[n-1]中找到最小的数a[i],然后a[i]与a[0]交换,第二趟:从a[1]到a[n-1]中找到最小的数a[j],然后将a[j]与a[1]交换,第三趟:从a[2]到a[n-1]中找到最小的数a[k],然后将a[k]与a[2]交换····
实例分析
{5,2,6,0,3,9,1,7,4,8}
第一趟:0 {2 ,6 ,5 ,3 ,9 ,1 ,7 ,4 ,8}
第二趟:0, 1 {6 ,5 ,3 ,9 ,2 ,7 ,4 ,8}
第三趟:0, 1, 2 {5 ,3 ,9 ,6 ,7 ,4 ,8}
······
代码实现
package test.algorithm.FastSlowPointer;public class SelectSort { /** * 选择排序 * @param list */ public static void selectSort(int[] list){ int min = 0 , temp = 0 , count1=0, count2=0; //每一轮先选出最小的元素,再判断是否需要移动位置 for(int i=0;i