增加两个参数,用num记录数组的值,index记录角标。
找到最小值后才开始数组中数值的交换,这样可以减少调用交换函数的次数,略微提升一点性能
1 public class Demo{ 2 public static void main(String[] args) { 3 int[] arr= {54,1,23,-9,188,63}; 4 printArry(arr); 5 selectSort(arr); 6 printArry(arr); 7 } 8 public static void swap(int[] arr,int i,int j) {//交换数组中的元素 9 int temp=arr[i]; 10 arr[i]=arr[j]; 11 arr[j]=temp; 12 } 13 public static void printArry(int[] arr) {//打印数组 14 System.out.print("["); 15 for(int i=0;i<arr.length;i++) { 16 if(i<arr.length-1) 17 System.out.print(arr[i]+","); 18 else 19 System.out.println(arr[i]+"]"); 20 } 21 } 22 public static void selectSort(int[] arr) {//选择排序性能版 23 for(int i=0;i<arr.length-1;i++) { 24 int num=arr[i]; 25 int index=i; 26 for(int j=i+1;j<arr.length;j++) { 27 if(num>arr[j]) { 28 num=arr[j]; 29 index=j; 30 } 31 } 32 if(i!=index) 33 swap(arr,i,index); 34 } 35 } 36 }
运行结果:
原文:https://www.cnblogs.com/langdao/p/11029114.html