选择排序
选择排序思想:
选择排序(select sorting) 也是一种简单的排序方法。它的基本思想是:第一次从arr[0]^ arr[n-1]中选取最小值,与arr[0]交换,第二次从arr[1]* ararrln-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次,得到一个按排序码从小到大排列的有序序列。
思路:
代码实现(普通方法与打擂台算法):
import java.util.Arrays; public class Test02_选择排序 { public static void main(String[] args) { int[] arr = {3,1,6,2,5}; Sort(arr); //SelectSort(arr); System.out.println("数组排序后的结果为:"+Arrays.toString(arr)); } //普通方法实现选择排序 public static void Sort(int[] arr){ for (int i=0;i<arr.length;i++){ for (int j=i+1;j<arr.length;j++){ if (arr[i] > arr[j]){ //交换位置 int temp; temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } } //打擂台实现选择排序 public static void SelectSort(int[] arr){ for (int i=0;i<arr.length-1;i++){ int maxIndex = i;//假设第一个元素是擂主 for (int j=i+1;j<arr.length;j++){//j+1是因为从第二个元素开始比较,因为第个值默认是最大 if(arr[j] > arr[maxIndex]){ maxIndex = j;//擂主易主 } } if ( maxIndex != i ){//如果擂主不是先前的 int temp; temp = arr[i]; arr[i] = arr[maxIndex]; arr[maxIndex] = temp; } } } }