public class Code_SelectSort { public static void selectionSort(int []arr){ //arr是一个无序的数组 长度是1或者为空的数组 直接返回空 //没有排序的必要了 if (arr==null||arr.length<2){ return; } //0~N-1 找到最小值,在哪,放到0位置上 //1~n-1 找到最小值,在哪,放到1位置上 //2~n-1 找到最小值,在哪,放到2位置上 //n-1~n-1 最后整个数组有序 /* 选择排序原理:选择最小的放在前面; i=0 -->比较N-1次 i=1 -->比较N-2次 */ //选择排序 for (int i=0;i<arr.length-1;i++){ //i表示轮空 i -->0 - n-2 //i=0 int minIndex=i;//默认第一个数是最小值数的索引 for (int j=1;j<arr.length;j++){ /* 0 1 2 3 4 [5,2,4,1,3] i = 0 j 从 1 -> 4 minIndex = 0; j = 1时 arr[j] = 2 arr[minIndex] = arr[0] = 5 minIndex = j = 1 j = 2时 arr[j] = 4 arr[minIndex] = arr[1] = 2 minIndex = 1 j = 3时 arr[j] = 1 arr[minIndex] = arr[1] = 2 minIndex = j = 3 j = 4时 arr[j] = 3 arr[minIndex] = arr[3] = 1 minIndex = 3 0 1 2 3 4 [1,5,3,4,2] i = 1 j 从2-->4 minIndex = i = 1; j = 2 arr[j] = 3 arr[minIndex] = 5 minIndex = 2 j = 3 arr[j] = 4 arr[minIndex] = 3 minIndex = 2 j = 4 arr[j] = 2 arr[minIndex] = 3 minIndex = 4 swap(arr, i, minIndex) */ if (arr[j]<arr[i]){ minIndex=j; } swap(arr,i,minIndex); } } } public static void swap(int[]arr,int i,int minIndex){ // 先储存i位置上的值 临时变量 int tmp=arr[i]; arr[i]=arr[minIndex]; arr[minIndex]=tmp; } public static void printArrays(int[]arr){ for (int i=0;i<arr.length;i++){ } } public static void main(String[] args) { int[] arr = {5,2,1,4,3}; } }
选择排序算法
最新推荐文章于 2024-11-07 19:52:43 发布