选择排序
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,
然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。.
以此类推,直到所有元素均排序完毕。
注:此方法直接对堆内存进行操作,故效率不高!
1 static void selectSort(int[] arr) 2 { 3 System.out.println(Arrays.toString(arr)); 4 for (int i = 0; i < arr.length; i++) 5 { 6 for (int j = i + 1; j < arr.length; j++) 7 { 8 if (arr[j] < arr[i]) 9 { 10 arr[i] = arr[i] ^ arr[j]; 11 arr[j] = arr[i] ^ arr[j]; 12 arr[i] = arr[i] ^ arr[j]; 13 } 14 } 15 } 16 System.out.println(Arrays.toString(arr)); 17 }
改进选择排序方法,不对堆内存操作,改变栈内存中的索引值,提高效率
1 static void selectSort2(int arr[]) 2 { 3 System.out.println(Arrays.toString(arr)); 4 int min; 5 for (int i = 0; i < arr.length; i++) 6 { 7 min = i; 8 for (int j = i + 1; j < arr.length; j++) 9 { 10 if (arr[j] < arr[min]) 11 { 12 min = j; 13 } 14 } 15 if (min != i) 16 { 17 int tt = arr[i]; 18 arr[i] = arr[min]; 19 arr[min] = tt; 20 } 21 } 22 System.out.println(Arrays.toString(arr)); 23 }

浙公网安备 33010602011771号