JavaSE基礎複習:ArrayTools工具類

來源:互聯網
上載者:User

  ------- 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培訓、期待與您交流! ----------

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.