------- android培訓、java培訓、期待與您交流! ----------
/*數組工具類:java.util.Arrays方法:print(arr) 列印數組;selectSort_1(arr)選擇排序1selectSort_2(arr)選擇排序2bubbleSort(arr)冒泡排序reverse(arr)數組倒置getIndex(arr,key)尋找key在arr中的角標binarySearch(arr,key)arr為升序數組,二分法尋找key,返回角標,如果不存在,傳回值為key在數組中的位置max(arr)擷取最大值min(arr)擷取最小值 */public class ArrayTools {public static void main(String[] args) {int[] arr = {5,2,7,21,12,44,1};print(arr);selectSort_2(arr);print(arr);reverse(arr);print(arr);selectSort_1(arr);print(arr);reverse(arr);print(arr);bubbleSort(arr);print(arr);System.out.println(getIndex(arr,4) + "二分法結果" + binarySearch(arr,4) + "max=" + max(arr) + "min=" + min(arr));//本二分法尋找只能尋找升序數組}//---列印數組public static void print(int[] arr) {System.out.print("[");for(int i=0; i<arr.length; i++) {if(i!=arr.length-1) System.out.print(arr[i] + ",");elseSystem.out.println(arr[i] + "]");}}/* 選擇法排序,升序 */public static void selectSort_1(int[] arr) {for(int i=0; i<arr.length-1; i++) {for(int j=i+1; j<arr.length; j++) {if(arr[i]>arr[j])swap(arr,i,j);}}}public static void selectSort_2(int[] arr) {for(int i=0; i<arr.length-1; i++) {int min = i;for(int j=i+1; j<arr.length; j++) {if(arr[min]>arr[j])min = j;}if(i!=min)swap(arr,i,min);}}/* 冒泡法排序,升序 */public static void bubbleSort(int[] arr) {for(int i=0; i<arr.length-1; i++) {for(int j=0; j<arr.length-i-1; j++) {if(arr[j] > arr[j+1]) swap(arr,j,j+1);}}}//---兩個位置交換private static void swap(int[] arr, int x, int y) {int temp = arr[x];arr[x] = arr[y];arr[y] = temp;}//---數組最大值public static int max(int[] arr) {int index = 0;for(int i=0; i<arr.length; i++) {if(arr[i]>arr[index])index = i;}return arr[index];}//---數組最小值public static int min(int[] arr) {int index = 0;for(int i=0; i<arr.length; i++) {if(arr[i]<arr[index])index = i;}return arr[index];}//---二分法尋找,數組arr為升序數組,如果存在key,則返回key在數組中的位置,否則返回-1public static int binarySearch(int[] arr, int key) {int min=0, mid, max=arr.length-1;while(min<=max) {mid = (min+max)>>1;if(key > arr[mid])min = mid +1;else if(key < arr[mid])max = mid - 1;else return mid;}return -min-1;//---如果需要得到key要插入的位置,因為min就是要插入的位置,可以返回-min-1,-1是為了和0角標區別開。}//---普通尋找,擷取key第一次出現的位置public static int getIndex(int[] arr, int key) {for(int i = 0; i < arr.length; i++) {if(arr[i] == key) return i;}return -1;}//---數組倒置public static void reverse(int[] arr) {for(int i=0,j=arr.length-1; i<j; i++,j--) {swap(arr,i,j);}}}
------- android培訓、java培訓、期待與您交流! ----------