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

java排序算法之_選擇排序(實例講解)

 更新時間:2017年09月13日 08:15:11   作者:ZincPool  
下面小編就為大家?guī)硪黄猨ava排序算法之_選擇排序(實例講解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

選擇排序是一種非常簡單的排序算法,從字面意思我們就可以知道,選擇就是從未排序好的序列中選擇出最小(最大)的元素,然后與第 i 趟排序的第 i-1(數(shù)組中下標(biāo)從 0 開始) 個位置的元素進行交換,第 i 個元素之前的序列就是已經(jīng)排序好的序列。整個排序過程只需要遍歷 n-1 趟便可排好,最后一個元素自動為最大(最?。┲?。

舉個小例子:

arr[] = {3,1,2,6,5,4}

第 1 趟排序: index = 0, min = 1,   交換后 -->  1,3,2,6,5,4

第 2 趟排序: index = 1, min = 2,   交換后 -->  1,2,3,6,5,4

第 3 趟排序: index = 2, min = 2,   交換后 -->  1,2,3,6,5,4

第 4 趟排序: index = 3, min = 5,   交換后 -->  1,2,3,4,5,6

第 5 趟排序: index = 4, min = 4,   交換后 -->  1,2,3,4,5,6

核心代碼如下:

/**
   * 選擇排序,從小到大排序
   */
  public static void selectsort(int[] arr) {
    int min = 0;  //記錄最小值的索引
    //遍歷 n-1 輪,最后一個數(shù)不用遍歷比較
    for(int i = 0; i < arr.length - 1; i++) {
      min = i;    //初始最小值為每輪循環(huán)的第一個數(shù)
      //遍歷初始最小值后的所有數(shù)
      for(int j = i + 1; j < arr.length; j++) {
        if(arr[min] > arr[j]) {    //判斷是否存在比最小值小的數(shù)
          min = j;        //記錄下標(biāo)  
        }
      }
      if(min != i) {      //判斷最小值的索引是否等于初始最小值的索引
        int temp = arr[min];    //不是則進行最小值交換
        arr[min] = arr[i];
        arr[i] = temp;
      }
    }
  }

選擇排序算法是一種不穩(wěn)定的算法,它的時間復(fù)雜度為 O(n2),空間復(fù)雜度為 O(1).

以上這篇java排序算法之_選擇排序(實例講解)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java8新特性之重復(fù)注解與類型注解詳解

    Java8新特性之重復(fù)注解與類型注解詳解

    這篇文章主要使介紹了Java8新特性重復(fù)注解與類型注解,文章還介紹了JDK5中的注解與之對比,感興趣的朋友可以參考下面具體文章內(nèi)容
    2021-09-09
  • 基于Java在netty中實現(xiàn)線程和CPU綁定

    基于Java在netty中實現(xiàn)線程和CPU綁定

    這篇文章主要介紹了基于Java在netty中實現(xiàn)線程和CPU綁定,文章圍繞主題的相關(guān)內(nèi)容展開詳細(xì)介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-05-05
  • 使用Stargate訪問K8ssandra的過程之Springboot整合Cassandra

    使用Stargate訪問K8ssandra的過程之Springboot整合Cassandra

    這篇文章主要介紹了使用Stargate訪問K8ssandra的過程之Springboot整合Cassandra,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-10-10
  • Java反射與Fastjson的危險反序列化詳解

    Java反射與Fastjson的危險反序列化詳解

    在?Java?中,Computer.class是一個引用,它表示了?Computer?的字節(jié)碼對象(Class對象),這個對象被廣泛應(yīng)用于反射、序列化等操作中,那么為什么?parseObject?需要這個引用呢,帶著這個問題我們一起通過本文學(xué)習(xí)下吧
    2024-07-07
  • java 集合----Map、Collection

    java 集合----Map、Collection

    HashSet 的 add() 方法添加集合元素時實際上轉(zhuǎn)變?yōu)檎{(diào)用 HashMap 的 put()方法來添加 key-value 對。HashMap 的 put() 方法.hashCode() 判斷返回值相等,如果返回值相等則再通過 equals 比較也返回 true,最終認(rèn)為key對象是相等的已經(jīng)在HashMap中存在。
    2016-04-04
  • 一文詳解Java中Map和Set接口的使用方法

    一文詳解Java中Map和Set接口的使用方法

    Map和set是一種專門用來進行搜索的容器或者數(shù)據(jù)結(jié)構(gòu),其搜索的效率與其具體的實例化子類有關(guān),可能在查找時進行一些插入和刪除的操作,即動態(tài)查找,那上述兩種方式就不太適合了,本節(jié)介紹的Map和Set是一種適合動態(tài)查找的集合容器,需要的朋友可以參考下
    2024-08-08
  • Java實現(xiàn)簡單棋盤存檔和讀取功能

    Java實現(xiàn)簡單棋盤存檔和讀取功能

    這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)簡單棋盤存檔和讀取功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • Java實現(xiàn)的剪刀石頭布游戲示例

    Java實現(xiàn)的剪刀石頭布游戲示例

    這篇文章主要介紹了Java實現(xiàn)的剪刀石頭布游戲,涉及java隨機數(shù)生成及邏輯判定等相關(guān)操作技巧,需要的朋友可以參考下
    2017-12-12
  • SpringCloud Zuul自定義filter代碼實例

    SpringCloud Zuul自定義filter代碼實例

    這篇文章主要介紹了SpringCloud Zuul自定義filter代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • mybatis存在更新不存在新增問題

    mybatis存在更新不存在新增問題

    這篇文章主要介紹了mybatis存在更新不存在新增問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08

最新評論