选择排序
/**
* 选择排序基本思路:
* 第一次从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]交换
*/
import java.util.Arrays;
public class selectSort {
public static void main(String[] args) {
int [] arr = {101, 34,119,1};
System.out.println("排序前");
System.out.println(Arrays.toString(arr));
selectStort(arr);
System.out.println("排序后");
System.out.println(Arrays.toString(arr));
}
public static void selectStort(int [] arr){
//选择排序时间复杂度 O(n^2)
for(int i = 0 ; i<arr.length-1 ; i++){
int minIndex = i;
int min = arr[i];
for(int j =i+1; j<arr.length;j++){
if(min > arr[j]){
min = arr[j];
minIndex = j;
}
}
if(minIndex != i){
arr[minIndex] = arr[i];
arr[i] = min;
}
// System.out.println("第"+(i+1)+"轮后");
// System.out.println(Arrays.toString(arr));
}
}
//通过写前两轮找出总规律
//原始数据: 101 , 34 , 119 , 1
//第一轮 : 1,34,119,101
// int minIndex = 0;
// int min = arr[0];
// for(int j = 0+1 ; j<arr.length ; j++){
// if(min > arr[j]){
// min = arr[j];
// minIndex = j;
// }
// }
// //将最小值放在arr[0],即交换
// if(minIndex != 0){
// arr[minIndex] = arr[0];
// arr[0] = min ;
// }
// System.out.println("第一轮后");
// System.out.println(Arrays.toString(arr));
//第二轮
// minIndex = 1;
// min = arr[1];
// for(int j =1 ; j <arr,length; j++){
// if(min > arr[j]){
// minIndex = j;
// min = arr[j];
// }
// }
// if(minIndex !=1 ){
//
// arr[minIndex] = arr[1];
// arr[1]= min;]
// }
}