选择排序:遍历数组,找到最小值,放到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++){
//默认最小值为i
int 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;
}
}
标签:arr,nums,int,最小值,选取,选择,算法,排序
From: https://blog.csdn.net/qq_45800511/article/details/137178250