欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java數(shù)組高級算法與Arrays類常見操作小結(jié)【排序、查找】

 更新時間:2019年03月20日 10:11:55   作者:白楊-M  
這篇文章主要介紹了Java數(shù)組高級算法與Arrays類常見操作,結(jié)合實例形式總結(jié)分析了Java數(shù)組常見的排序算法、查找算法相關原理、實現(xiàn)與使用技巧,需要的朋友可以參考下

本文實例講述了Java數(shù)組高級算法與Arrays類常見操作。分享給大家供大家參考,具體如下:

冒泡排序

冒泡排序原理

冒泡排序代碼:

package cn.itcast_01;
/*
 * 數(shù)組排序之冒泡排序:
 *     相鄰元素兩兩比較,大的往后放,第一次完畢,最大值出現(xiàn)在了最大索引處
 */
public class ArrayDemo {
  public static void main(String[] args) {
    // 定義一個數(shù)組
    int[] arr = { 24, 69, 80, 57, 13 };
    System.out.println("排序前:");
    printArray(arr);
    bubbleSort(arr);
    System.out.println("排序后:");
    printArray(arr);
  }
  //冒泡排序代碼
  /*總共需要比較數(shù)組長度-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;
/*
 * 數(shù)組排序之選擇排序:
 *     從0索引開始,依次和后面元素比較,小的往前放,第一次完畢,最小值出現(xiàn)在了最小索引處
 */
public class ArrayDemo {
  public static void main(String[] args) {
    // 定義一個數(shù)組
    int[] arr = { 24, 69, 80, 57, 13 };
    System.out.println("排序前:");
    printArray(arr);
    //用方法改進
    selectSort(arr);
    System.out.println("排序后:");
    printArray(arr);
  }
  /*
   * 數(shù)組排序
   * */
  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("]");
  }
}

二分查找法

二分查找法原理

二分法的代碼實現(xiàn):

package cn.itcast_04;
/*
 * 查找:
 *     基本查找:數(shù)組元素無序(從頭找到尾)
 *     二分查找(折半查找):數(shù)組元素有序
 *
 * 分析:
 *     A:定義最大索引,最小索引
 *     B:計算出中間索引
 *     C:拿中間索引的值和要查找的值進行比較
 *       相等:就返回當前的中間索引
 *       不相等:
 *         大  左邊找
 *         小  右邊找
 *     D:重新計算出中間索引
 *       大  左邊找
 *         max = mid - 1;
 *       小  右邊找
 *         min = mid + 1;
 *     E:回到B
 */
public class ArrayDemo {
  public static void main(String[] args) {
    //定義一個數(shù)組
    int[] arr = {11,22,33,44,55,66,77};
    //寫功能實現(xiàn)
    int index = getIndex(arr, 33);
    System.out.println("index:"+index);
    //假如這個元素不存在后有什么現(xiàn)象呢?
    index = getIndex(arr, 333);
    System.out.println("index:"+index);
  }
  /*
   * 兩個明確:
   * 返回值類型:int
   * 參數(shù)列表: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:針對數(shù)組進行操作的工具類。比如說排序和查找。
 * 1:public static String toString(int[] a) 把數(shù)組轉(zhuǎn)成字符串
 * 2:public static void sort(int[] a) 對數(shù)組進行排序
 * 3:public static int binarySearch(int[] a,int key) 二分查找
 */
public class ArraysDemo {
  public static void main(String[] args) {
    // 定義一個數(shù)組
    int[] arr = { 24, 69, 80, 57, 13 };
    // public static String toString(int[] a) 把數(shù)組轉(zhuǎn)成字符串
    System.out.println("排序前:" + Arrays.toString(arr));
    // public static void sort(int[] a) 對數(shù)組進行排序
    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));
  }
}

PS:這里再為大家推薦幾款相似的在線工具供大家參考:

在線動畫演示插入/選擇/冒泡/歸并/希爾/快速排序算法過程工具:
http://tools.jb51.net/aideddesign/paixu_ys

在線JS常見遍歷方式性能分析比較工具:
http://tools.jb51.net/aideddesign/js_bianli

更多關于java相關內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)組操作技巧總結(jié)》、《Java字符與字符串操作技巧總結(jié)》、《Java數(shù)學運算技巧總結(jié)》、《Java數(shù)據(jù)結(jié)構與算法教程》及《Java操作DOM節(jié)點技巧總結(jié)

希望本文所述對大家java程序設計有所幫助。

相關文章

  • myeclipse8.5優(yōu)化技巧詳解

    myeclipse8.5優(yōu)化技巧詳解

    本文詳細介紹了myeclipse8.5優(yōu)化技巧,在這里和大家分享一下,希望對大家有用。
    2017-09-09
  • SpringBoot項目中遇到的BUG問題及解決方法

    SpringBoot項目中遇到的BUG問題及解決方法

    這篇文章主要介紹了SpringBoot項目中遇到的BUG問題及解決方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • Java Swing JPasswordField密碼框的實現(xiàn)示例

    Java Swing JPasswordField密碼框的實現(xiàn)示例

    這篇文章主要介紹了Java Swing JPasswordField密碼框的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • 淺談java如何實現(xiàn)Redis的LRU緩存機制

    淺談java如何實現(xiàn)Redis的LRU緩存機制

    今天給大家?guī)淼氖顷P于Java的相關知識,文章圍繞著java如何實現(xiàn)Redis的LRU緩存機制展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Java中生成隨機數(shù)的4種方式與區(qū)別詳解

    Java中生成隨機數(shù)的4種方式與區(qū)別詳解

    生成隨機數(shù)是我們?nèi)粘i_發(fā)經(jīng)常會遇到的一個功能,這篇文章主要給大家介紹了關于Java中生成隨機數(shù)的4種方式與區(qū)別、應用場景的相關資料,4個方式分別是Random、ThreadLocalRandom、SecureRandom以及Math,需要的朋友可以參考下
    2021-06-06
  • 通過Java實現(xiàn)在Word中創(chuàng)建可填充表單

    通過Java實現(xiàn)在Word中創(chuàng)建可填充表單

    這篇文章主要為大家詳細介紹了如何通過Java代碼,以編程方式在Word中創(chuàng)建可填充表單,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2023-03-03
  • java二路歸并排序示例分享

    java二路歸并排序示例分享

    這篇文章主要介紹了java二路歸并排序示例,需要的朋友可以參考下
    2014-02-02
  • Java簡單實現(xiàn)農(nóng)夫過河問題示例

    Java簡單實現(xiàn)農(nóng)夫過河問題示例

    這篇文章主要介紹了Java簡單實現(xiàn)農(nóng)夫過河問題,簡單描述了農(nóng)夫過河問題的概念、原理并結(jié)合簡單實例形式分析了java解決農(nóng)夫過河問題的相關操作技巧,需要的朋友可以參考下
    2017-12-12
  • Java學習-打印1-1000以內(nèi)的水仙花數(shù)代碼實例

    Java學習-打印1-1000以內(nèi)的水仙花數(shù)代碼實例

    這篇文章主要介紹了Java打印1-1000以內(nèi)的水仙花數(shù),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • Spring:@Async注解和AsyncResult與CompletableFuture使用問題

    Spring:@Async注解和AsyncResult與CompletableFuture使用問題

    這篇文章主要介紹了Spring:@Async注解和AsyncResult與CompletableFuture使用問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08

最新評論