选择排序:遍历数组,找到最小值,放到arr[0],遍历剩下的数组,找到最小值放到arr[1],以此类推。
思路:第一次从 arr[0]~arr[n-1]中选取最小值,与 arr[0]交换,第二次从 arr[1]~arr[n-1]中选取最小值,与 arr[1]交换,第三次从 arr[2]~arr[n-1]中选取最小值,与 arr[2]交换,...,第 i 次从 arr[i-1]~arr[n-1]中选取最小值,与 arr[i-1]交换,..., 第 n-1 次从 arr[n-2]~arr[n-1]中选取最小值,
与 arr[n-2]交换,总共通过 n-1 次,得到一个按排序码从小到大排列的有序序列。
class Solution {public void sortArray(int[] nums) {if(nums==null || nums.length<2 ){return;}int n=nums.length;//i<n-1,因为总共需要n-1次交换for(int i=0;i<n-1;i++){//默认最小值为iint minIndex=i;for(int j=i+1;j<n;j++){minIndex=nums[minIndex]>nums[j]?j:minIndex;}swap(nums,i,minIndex);}}public void swap(int[] nums,int a,int b){int temp=nums[a];nums[a]=nums[b];nums[b]=temp;}
}