這篇文章將為大家詳細講解有關Java數組高級算法與Arrays類常見操作的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
冒泡排序
冒泡排序原理
冒泡排序代碼:
package cn.itcast_01; /* * 數組排序之冒泡排序: * 相鄰元素兩兩比較,大的往后放,第一次完畢,最大值出現在了最大索引處 */ public class ArrayDemo { public static void main(String[] args) { // 定義一個數組 int[] arr = { 24, 69, 80, 57, 13 }; System.out.println("排序前:"); printArray(arr); bubbleSort(arr); System.out.println("排序后:"); printArray(arr); } //冒泡排序代碼 /*總共需要比較數組長度-1次,x < arr.length - 1 *每一次比較完,下一次就會減少一次元素的比較。第一次比較有0個元素不比,第二次有1個元素不比,,,,所以 y < arr.length - 1 - x *兩兩比較,大的往后放 * */ public static void bubbleSort(int[] arr){ for (int x = 0; x < arr.length - 1; x++) { for (int y = 0; y < arr.length - 1 - x; y++) { if (arr[y] > arr[y + 1]) { int temp = arr[y]; arr[y] = arr[y + 1]; arr[y + 1] = temp; } } } } // 遍歷功能 public static void printArray(int[] arr) { System.out.print("["); for (int x = 0; x < arr.length; x++) { if (x == arr.length - 1) { System.out.print(arr[x]); } else { System.out.print(arr[x] + ", "); } } System.out.println("]"); } }
選擇排序
選擇排序原理圖
選擇排序代碼
package cn.itcast_02; /* * 數組排序之選擇排序: * 從0索引開始,依次和后面元素比較,小的往前放,第一次完畢,最小值出現在了最小索引處 */ public class ArrayDemo { public static void main(String[] args) { // 定義一個數組 int[] arr = { 24, 69, 80, 57, 13 }; System.out.println("排序前:"); printArray(arr); //用方法改進 selectSort(arr); System.out.println("排序后:"); printArray(arr); } /* * 數組排序 * */ public static void selectSort(int[] arr){ for(int x=0; x<arr.length-1; x++){ for(int y=x+1; y<arr.length; y++){ if(arr[y] <arr[x]){ int temp = arr[x]; arr[x] = arr[y]; arr[y] = temp; } } } } // 遍歷功能 public static void printArray(int[] arr) { System.out.print("["); for (int x = 0; x < arr.length; x++) { if (x == arr.length - 1) { System.out.print(arr[x]); } else { System.out.print(arr[x] + ", "); } } System.out.println("]"); } }
二分查找法
二分查找法原理
二分法的代碼實現:
package cn.itcast_04; /* * 查找: * 基本查找:數組元素無序(從頭找到尾) * 二分查找(折半查找):數組元素有序 * * 分析: * A:定義最大索引,最小索引 * B:計算出中間索引 * C:拿中間索引的值和要查找的值進行比較 * 相等:就返回當前的中間索引 * 不相等: * 大 左邊找 * 小 右邊找 * D:重新計算出中間索引 * 大 左邊找 * max = mid - 1; * 小 右邊找 * min = mid + 1; * E:回到B */ public class ArrayDemo { public static void main(String[] args) { //定義一個數組 int[] arr = {11,22,33,44,55,66,77}; //寫功能實現 int index = getIndex(arr, 33); System.out.println("index:"+index); //假如這個元素不存在后有什么現象呢? index = getIndex(arr, 333); System.out.println("index:"+index); } /* * 兩個明確: * 返回值類型:int * 參數列表:int[] arr,int value */ public static int getIndex(int[] arr,int value){ //定義最大索引,最小索引 int max = arr.length -1; int min = 0; //計算出中間索引 int mid = (max +min)/2; //拿中間索引的值和要查找的值進行比較 while(arr[mid] != value){ if(arr[mid]>value){ max = mid - 1; }else if(arr[mid]<value){ min = mid + 1; } //加入判斷 if(min > max){ return -1; } mid = (max +min)/2; } return mid; } }
Arrays類
package cn.itcast_05; import java.util.Arrays; /* * Arrays:針對數組進行操作的工具類。比如說排序和查找。 * 1:public static String toString(int[] a) 把數組轉成字符串 * 2:public static void sort(int[] a) 對數組進行排序 * 3:public static int binarySearch(int[] a,int key) 二分查找 */ public class ArraysDemo { public static void main(String[] args) { // 定義一個數組 int[] arr = { 24, 69, 80, 57, 13 }; // public static String toString(int[] a) 把數組轉成字符串 System.out.println("排序前:" + Arrays.toString(arr)); // public static void sort(int[] a) 對數組進行排序 Arrays.sort(arr); System.out.println("排序后:" + Arrays.toString(arr)); // [13, 24, 57, 69, 80] // public static int binarySearch(int[] a,int key) 二分查找 System.out.println("binarySearch:" + Arrays.binarySearch(arr, 57)); System.out.println("binarySearch:" + Arrays.binarySearch(arr, 577)); } }
關于“Java數組高級算法與Arrays類常見操作的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。