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

Java 十大排序算法之計(jì)數(shù)排序刨析

 更新時(shí)間:2021年11月24日 09:17:37   作者:龍弟-idea  
計(jì)數(shù)排序是一個(gè)非基于比較的排序算法,該算法于1954年由 Harold H. Seward 提出。它的優(yōu)勢(shì)在于在對(duì)一定范圍內(nèi)的整數(shù)排序時(shí),它的復(fù)雜度為Ο(n+k)(其中k是整數(shù)的范圍),快于任何比較排序算法

計(jì)數(shù)排序是非比較的排序算法,用輔助數(shù)組對(duì)數(shù)組中出現(xiàn)的數(shù)字計(jì)數(shù),元素轉(zhuǎn)下標(biāo),下標(biāo)轉(zhuǎn)元素

計(jì)數(shù)排序優(yōu)缺點(diǎn)

優(yōu)點(diǎn):快

缺點(diǎn):數(shù)據(jù)范圍很大,比較稀疏,會(huì)導(dǎo)致輔助空間很大,造成空間的浪費(fèi)

使用范圍:數(shù)據(jù)較為密集或范圍較小時(shí)適用。

思路

1.找出最大元素max

2.初始化一個(gè)max+1的數(shù)組

3.將每個(gè)元素的計(jì)數(shù)存儲(chǔ)在數(shù)組中各自的索引處

4.存儲(chǔ)計(jì)數(shù)數(shù)組元素的累積和

5.數(shù)組中找到原始數(shù)組的每個(gè)元素的索引

計(jì)數(shù)排序代碼實(shí)現(xiàn)

public class CountingSort {
    private static int[] countingSort(int[] arr) {
        //1、求取最大值和最小值,計(jì)算中間數(shù)組的長(zhǎng)度:中間數(shù)組是用來記錄原始數(shù)據(jù)中每個(gè)值出現(xiàn)的頻率
        int min = arr[0], max = arr[0];
        for (int i : arr) {
            if (i > max) {
                max = i;
            }
            if (i < min) {
                min = i;
            }
        }
 
        //2、有了最大值和最小值能夠確定中間數(shù)組的長(zhǎng)度
        //例如存儲(chǔ) 5-0+1=6
        int[] countArray = new int[max - min + 1];
 
        //3、循環(huán)遍歷舊數(shù)組計(jì)數(shù)排序: 就是統(tǒng)計(jì)原始數(shù)組值出現(xiàn)的頻率到中間數(shù)組B中
        for (int i : arr) {
            countArray[i - min] += 1; //數(shù)的位置上+1
        }
 
        //4、統(tǒng)計(jì)數(shù)組做變形,后邊的元素等于前面的元素之和
        for (int i = 1; i < countArray.length; i++) {
            countArray[i] += countArray[i - 1];
        }
 
        //5、倒序遍歷原始數(shù)組,從統(tǒng)計(jì)數(shù)組中找到正確的位置,輸出到結(jié)果數(shù)組
        int[] resultArray = new int[arr.length];
        for (int i = arr.length - 1; i >= 0; i--) {
            //給resultArray的當(dāng)前位置賦值
            resultArray[countArray[arr[i] - min] - 1] = arr[i];
            //給countArray的位置的值--
            countArray[arr[i] - min]--;
        }
        return resultArray;
    }
 
    public static void main(String[] args) {
        int[] arr = {1,28,3,21,11,7,6,18};
        int[] sortedArr = countingSort(arr);
        System.out.println(Arrays.toString(sortedArr));
    }
}

時(shí)間復(fù)雜度:O(n+k)

到此這篇關(guān)于Java 十大排序算法之計(jì)數(shù)排序刨析的文章就介紹到這了,更多相關(guān)Java 計(jì)數(shù)排序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • IDEA創(chuàng)建Maven項(xiàng)目一直顯示正在加載的問題及解決

    IDEA創(chuàng)建Maven項(xiàng)目一直顯示正在加載的問題及解決

    這篇文章主要介紹了IDEA創(chuàng)建Maven項(xiàng)目一直顯示正在加載的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 關(guān)于Java中避免空指針的方法

    關(guān)于Java中避免空指針的方法

    這篇文章主要介紹了關(guān)于Java中避免空指針的方法,空指針異常就是我們?cè)趯?duì)空對(duì)象進(jìn)行的任何操作都會(huì)報(bào)空指針異常,所謂的指針,就是java中的對(duì)象的引用,比如String?s;這個(gè)就是指針,需要的朋友可以參考下
    2023-07-07
  • IDEA中沒有Mapper.xml模板選項(xiàng)的處理方法

    IDEA中沒有Mapper.xml模板選項(xiàng)的處理方法

    這篇文章主要介紹了IDEA中沒有Mapper.xml模板選項(xiàng)的處理方法,需其實(shí)解決方法很簡(jiǎn)單,只需要在idea中導(dǎo)入模板即可,本文圖文的形式給大家分享解決方法,需要的朋友可以參考下
    2021-04-04
  • HttpMessageConverter報(bào)文信息轉(zhuǎn)換器的深入講解

    HttpMessageConverter報(bào)文信息轉(zhuǎn)換器的深入講解

    在Spring中內(nèi)置了大量的HttpMessageConverter,通過請(qǐng)求頭信息中的MIME類型,選擇相應(yīng)的HttpMessageConverter,這篇文章主要給大家介紹了關(guān)于HttpMessageConverter報(bào)文信息轉(zhuǎn)換器的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • Flink時(shí)間和窗口邏輯處理源碼分析

    Flink時(shí)間和窗口邏輯處理源碼分析

    這篇文章主要為大家介紹了Flink時(shí)間和窗口邏輯處理源碼分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • JSON Web Token在登陸中的使用過程

    JSON Web Token在登陸中的使用過程

    這篇文章主要介紹了JSON Web Token在登陸中的使用過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • Java Hutool 包工具類推薦 ExcelUtil詳解

    Java Hutool 包工具類推薦 ExcelUtil詳解

    這篇文章主要介紹了Java Hutool 包工具類推薦 ExcelUtil詳解,需要引入hutool包,版本號(hào)可根據(jù)實(shí)際情況更換,除hutool包之外,還需要引入操作Excel必要包,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • 關(guān)于dubbo的超時(shí)處理及重試原則

    關(guān)于dubbo的超時(shí)處理及重試原則

    這篇文章主要介紹了關(guān)于dubbo的超時(shí)處理及重試原則,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Java雙向鏈表倒置功能實(shí)現(xiàn)過程解析

    Java雙向鏈表倒置功能實(shí)現(xiàn)過程解析

    這篇文章主要介紹了Java雙向鏈表倒置功能實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Java CountDownLatch的源碼硬核解析

    Java CountDownLatch的源碼硬核解析

    對(duì)于并發(fā)執(zhí)行,Java中的CountDownLatch是一個(gè)重要的類。為了更好的理解CountDownLatch這個(gè)類,本文將通過例子和源碼帶領(lǐng)大家深入解析這個(gè)類的原理,感興趣的可以學(xué)習(xí)一下
    2022-10-10

最新評(píng)論

京山县| 额敏县| 亚东县| 门头沟区| 博白县| 遵义县| 东山县| 福安市| 阿拉尔市| 柞水县| 开封县| 津市市| 元江| 航空| 潜山县| 曲松县| 独山县| 大名县| 阜平县| 葫芦岛市| 武隆县| 县级市| 天全县| 云龙县| 遂平县| 平南县| 长乐市| 太和县| 桦甸市| 喀喇沁旗| 宜宾市| 台州市| 紫阳县| 合山市| 政和县| 宜兰县| 儋州市| 闽清县| 兴宁市| 翁牛特旗| 乐山市|