public class SortAndSelectDemo{ public static void main(String[] args){ int[] arr = {3, 5, 17, 2, 11, 13, 19, 7, 23}; //bubbleSort(arr); selectSort(arr); printArr(arr); int searchIndex = halfSearch(arr,6); System.out.println(searchIndex); } //选择排序 public static void selectSort(int[] arr){ for(int i = 0; i < arr.length-1; i++){ for(int j = i+1; j < arr.length-1; j++){ if(arr[i] > arr[j]){ int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } } //冒泡排序 //外循环:对比n-1次,内循环:n-1次随i递减 public static void bubbleSort(int[] arr){ for(int i = 0; i < arr.length-1; i++){ for(int j = 0; j < arr.length-1-i; j++){ if(arr[j] > arr[j+1]){ int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } } //折半查找 public static int halfSearch(int[] arr, int searchNum){ int minIndex = 0; int maxIndex = arr.length; int midIndex = 0; while(minIndex < maxIndex){ midIndex = (minIndex + maxIndex)/2; if(arr[midIndex] > searchNum){ maxIndex = midIndex-1; }else if(arr[midIndex] < searchNum){ minIndex = midIndex + 1; }else{ return midIndex; } } return -1; } public static void printArr(int[] arr){ System.out.print("["); for(int i = 0;i < arr.length; i++){ if(i == arr.length-1){ System.out.println(arr[i] + "]"); }else{ System.out.print(arr[i] + " "); } } } }
选择排序:
冒泡排序: