最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JAVA十大排序算法之選擇排序詳解

 更新時間:2021年08月23日 09:40:35   投稿:BJT  
這篇文章主要介紹了java中的選擇排序,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

選擇排序

1.找到數(shù)組中最大(或最?。┑脑?/p>

2.將它和數(shù)組的第一個元素交換位置(如果第一個元素就是最大(?。┰啬敲此秃妥约航粨Q)

3.在剩下的元素中找到最大(?。┑脑兀瑢⑺c數(shù)組的第二個元素交換位置。如此往復(fù),直到將整個數(shù)組排序。

image-20210728144443166

代碼實現(xiàn)

對下面數(shù)組實現(xiàn)排序:{87, 23, 7, 43, 78, 62, 98, 81, 18, 53, 73, 9}

動圖演示

選擇排序

代碼實現(xiàn)

public class SelectionSort {
    public static final int[] ARRAY = {87, 23, 7, 43, 78, 62, 98, 81, 18, 53, 73, 9};
    public static int[] sort(int[] array) {
        if (array.length == 0) {
            return array;
        }
        for (int i = 0; i < array.length; i++) {
            //最小數(shù)的下標(biāo),每個循環(huán)開始總是假設(shè)第一個數(shù)最小
            int minIndex = i;
            for (int j = i; j < array.length; j++) {
                //找到最小索引
                if (array[j] < array[minIndex]) {
                    //保存最小索引
                    minIndex = j;
                }
            }
            //最小索引的值
            int temp = array[minIndex];
            array[minIndex] = array[i];
            array[i] = temp;
        }
        return array;
    }
    public static void print(int[] array) {
        for (int i : array) {
            System.out.print(i + "  ");
        }
        System.out.println("");
    }
    public static void main(String[] args) {
        print(ARRAY);
        System.out.println("============================================");
        print(sort(ARRAY));
    }
}

時間復(fù)雜度

很明顯,和冒泡排序相比,在查找最?。ɑ蜃畲螅┰氐乃饕?,比較次數(shù)仍然保持為O(n2)

,但元素交換次數(shù)為O(n)。

算法穩(wěn)定性

選擇排序是給每個位置選擇當(dāng)前元素最小的,比如給第一個位置選擇最小的,在剩余元素里面給第二個元素選擇第二小的,依次類推,直到第n-1個元素,第n個元素不用選擇了,因為只剩下它一個最大的元素了。那么,在一趟選擇,如果一個元素比當(dāng)前元素小,而該小的元素又出現(xiàn)在一個和當(dāng)前元素相等的元素后面,那么交換后穩(wěn)定性就被破壞了。舉個例子,數(shù)組5,8,5,2,9,我們知道第一遍選擇第1個元素5會和2交換,那么原序列中兩個5的相對前后順序就被破壞了,所以選擇排序是一個不穩(wěn)定的排序算法。

image-20210728144637093

總結(jié)

本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • Mybatis 動態(tài)sql的編寫與開啟二級緩存

    Mybatis 動態(tài)sql的編寫與開啟二級緩存

    二級緩存是Mapper級別的緩存,多個SqlSession去操作同一個Mapper中的SQL語句,則這些SqlSession可以共享二級緩存,即二級緩存是跨SqlSession的,這篇文章主要介紹了Mybatis 動態(tài)sql的編寫|開啟二級緩存,需要的朋友可以參考下
    2023-02-02
  • 詳細學(xué)習(xí)Java Cookie技術(shù)(用戶登錄、瀏覽、訪問權(quán)限)

    詳細學(xué)習(xí)Java Cookie技術(shù)(用戶登錄、瀏覽、訪問權(quán)限)

    這篇文章主要為大家詳細介紹了Java Cookie技術(shù),顯示用戶上次登錄的時間、顯示用戶最近瀏覽的若干個圖片(按比例縮放)等,感興趣的小伙伴們可以參考一下
    2016-08-08
  • MyBatis的CRUD中的不同參數(shù)綁定查詢實現(xiàn)

    MyBatis的CRUD中的不同參數(shù)綁定查詢實現(xiàn)

    本文主要介紹了MyBatis的CRUD中的不同參數(shù)綁定查詢實現(xiàn),主要包括單個參數(shù)傳遞綁定,序號參數(shù)傳遞綁定,注解參數(shù)傳遞綁定,pojo(對象)參數(shù)傳遞綁定,map參數(shù)傳遞綁定這幾種類型,具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • Java+mysql用戶注冊登錄功能

    Java+mysql用戶注冊登錄功能

    這篇文章主要為大家詳細介紹了Java結(jié)合mysql實現(xiàn)用戶注冊登錄功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • idea中創(chuàng)建jsp項目的詳細實戰(zhàn)步驟

    idea中創(chuàng)建jsp項目的詳細實戰(zhàn)步驟

    才學(xué)javaWeb,以防自己忘記創(chuàng)建項目的過程,所以淺淺的記錄一下吧,下面這篇文章主要給大家介紹了關(guān)于idea中創(chuàng)建jsp項目的詳細步驟,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2022-09-09
  • Spring Boot+Drools規(guī)則引擎整合詳解

    Spring Boot+Drools規(guī)則引擎整合詳解

    本篇文章主要介紹了Spring Boot+Drools規(guī)則引擎整合,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • Java中的StringBuilder()常見方法詳解

    Java中的StringBuilder()常見方法詳解

    StringBuilder是一個可變的字符序列,此類提供一個與 StringBuffer 兼容的 API,但不保證同步,這篇文章主要介紹了StringBuilder()常見方法,需要的朋友可以參考下
    2023-09-09
  • Spring?Cloud?Eureka高可用配置(踩坑記錄)

    Spring?Cloud?Eureka高可用配置(踩坑記錄)

    在進行Eureka高可用配置時,控制臺一直出現(xiàn)“......”的錯誤,但是在瀏覽器中輸入地址:peer1:8761 卻是可正常運行,這篇文章主要介紹了Spring?Cloud踩坑之Eureka高可用配置,需要的朋友可以參考下
    2023-08-08
  • java8中新的Date和Time詳解

    java8中新的Date和Time詳解

    這篇文章主要是java8中新的Date和Time,探討新Date類和Time類背后的設(shè)計原則,有所需要的小伙伴希望能幫助到你
    2016-07-07
  • Java 線程池詳解及創(chuàng)建簡單實例

    Java 線程池詳解及創(chuàng)建簡單實例

    這篇文章主要介紹了Java 線程池詳解及創(chuàng)建簡單實例的相關(guān)資料,需要的朋友可以參考下
    2017-02-02

最新評論

建始县| 福泉市| 东丰县| 怀柔区| 万载县| 汝城县| 涟水县| 石景山区| 伊吾县| 德惠市| 柯坪县| 龙陵县| 故城县| 西贡区| 芜湖市| 马鞍山市| 廊坊市| 保定市| 平陆县| 彰化市| 克东县| 漾濞| 洪雅县| 翁牛特旗| 琼结县| 合川市| 石楼县| 视频| 迁安市| 沁阳市| 惠水县| 商水县| 东港市| 天等县| 沈阳市| 九江县| 若尔盖县| 大新县| 牟定县| 洪洞县| 桃园市|