亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

舉個(gè)小例子:

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 輪,最后一個(gè)數(shù)不用遍歷比較
    for(int i = 0; i < arr.length - 1; i++) {
      min = i;    //初始最小值為每輪循環(huán)的第一個(gè)數(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];    //不是則進(jìn)行最小值交換
        arr[min] = arr[i];
        arr[i] = temp;
      }
    }
  }

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

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

相關(guān)文章

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

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

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

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

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

    使用Stargate訪(fǎng)問(wèn)K8ssandra的過(guò)程之Springboot整合Cassandra

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

    Java反射與Fastjson的危險(xiǎn)反序列化詳解

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

    java 集合----Map、Collection

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

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

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

    Java實(shí)現(xiàn)簡(jiǎn)單棋盤(pán)存檔和讀取功能

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

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

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

    SpringCloud Zuul自定義filter代碼實(shí)例

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

    mybatis存在更新不存在新增問(wèn)題

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

最新評(píng)論