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

Java排序算法之計數(shù)排序解析

 更新時間:2023年10月31日 10:19:31   作者:哇哈哈水有點甜  
這篇文章主要介紹了Java排序算法之計數(shù)排序解析,找到數(shù)組中數(shù)值最大的元素,創(chuàng)建一個長度為最大元素+1的臨時數(shù)組,這樣就可以把原始數(shù)組轉(zhuǎn)換為以原始數(shù)組元素值為下標(biāo),相同元素個數(shù)為值的臨時數(shù)組,需要的朋友可以參考下

Java計數(shù)排序解析

原理:找到數(shù)組中數(shù)值最大的元素,(如這里的8),創(chuàng)建一個長度為最大元素+1的臨時數(shù)組,(這里為9),這樣就可以把原始數(shù)組轉(zhuǎn)換為: 以原始數(shù)組元素值為下標(biāo),相同元素個數(shù)為值的臨時數(shù)組 如數(shù)組 [8,4,2,3,5] 經(jīng)過轉(zhuǎn)換后形成了 [0,0,1,1,1,1,0,0,1] 的數(shù)組,如下圖:

在這里插入圖片描述

但是在一些情況下,這樣創(chuàng)建數(shù)組是不合適的,如[90,96,92,93,95] ,這就需要創(chuàng)建一個長度為97的數(shù)組,而這個數(shù)組前90個位置就被浪費了,所以可以進(jìn)行優(yōu)化

優(yōu)化:用數(shù)組的最大值減去最小值,創(chuàng)建一個長度為差值+1的數(shù)組,保存每個元素時保存相對大小,如上面這個數(shù)組,差值為8-2=6,創(chuàng)建一個長度為7的數(shù)組,用每個元素減去最小值,然后用結(jié)果去轉(zhuǎn)換為下面的數(shù)組

在這里插入圖片描述

代碼實現(xiàn)(java):

//測試
public static void main(String[] args) {
    int[] arr = {8,4,2,2,3,3,5};
    countSort(arr);
}
public static void countSort(int[] arr){
    //1.取出數(shù)組中的最大值和最小值
    int max = arr[0];
    int min = arr[0];
    for (int i = 0; i < arr.length - 1; i++) {
        if (arr[i] < min) {
            min = arr[i];
        }
        if (arr[i] > max) {
            max = arr[i];
        }
    }
    //最大值和最小值的差值
    int len = max - min;
    //創(chuàng)建差值+1長度的臨時數(shù)組
    int[] tmp = new int[len + 1];
    //遍歷原數(shù)組,將(元素-最小值)作為下標(biāo),元素個數(shù)為value,插入到臨時數(shù)組
    for (int i : arr) {
        tmp[i-min] ++;
    }
    //遍歷臨時數(shù)組,每個下標(biāo)為值,元素值為次數(shù),依次打印
    for (int i = 0; i < tmp.length; i++) {
        for (int j = i; j < tmp[i]+i; j++) {
            System.out.println(j + min);
        }
    }
}

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

相關(guān)文章

  • 詳談Springfox與swagger的整合使用

    詳談Springfox與swagger的整合使用

    下面小編就為大家?guī)硪黄斦凷pringfox與swagger的整合使用。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • SpringBoot查看項目配置信息的幾種常見方法

    SpringBoot查看項目配置信息的幾種常見方法

    這篇文章主要為大家詳細(xì)介紹了查看Spring Boot項目所有配置信息的幾種方法,包括 Actuator端點,日志輸出,代碼級獲取等方式并附帶詳細(xì)步驟和示例,希望對大家有一定的幫助
    2025-04-04
  • SpringBoot實現(xiàn)發(fā)送郵件功能的三種方式

    SpringBoot實現(xiàn)發(fā)送郵件功能的三種方式

    本文詳細(xì)介紹了如何在SpringBoot應(yīng)用中使用JavaMailSender、JavaMailAPI和ApacheCommonsEmail庫發(fā)送郵件,對比了它們的優(yōu)缺點,并提供了示例代碼和配置指導(dǎo),需要的朋友可以參考下
    2025-07-07
  • Java stringBuilder的使用方法及實例解析

    Java stringBuilder的使用方法及實例解析

    這篇文章主要介紹了Java stringBuilder的使用方法及實例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • Java中==運算符與equals方法的區(qū)別及intern方法詳解

    Java中==運算符與equals方法的區(qū)別及intern方法詳解

    這篇文章主要介紹了Java中==運算符與equals方法的區(qū)別及intern方法詳解的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • springmvc字符編碼過濾器CharacterEncodingFilter的使用

    springmvc字符編碼過濾器CharacterEncodingFilter的使用

    這篇文章主要介紹了springmvc字符編碼過濾器CharacterEncodingFilter的使用,具有很好的參考價值,希望對大家有所幫助。
    2021-08-08
  • Java遞歸 遍歷目錄的小例子

    Java遞歸 遍歷目錄的小例子

    Java遞歸 遍歷目錄的小例子,需要的朋友可以參考一下
    2013-03-03
  • SpringCloud實戰(zhàn)之Zuul網(wǎng)關(guān)服務(wù)

    SpringCloud實戰(zhàn)之Zuul網(wǎng)關(guān)服務(wù)

    服務(wù)網(wǎng)關(guān)是分布式架構(gòu)中不可缺少的組成部分,是外部網(wǎng)絡(luò)和內(nèi)部服務(wù)之間的屏障。這篇文章主要介紹了SpringCloud實戰(zhàn)之Zuul網(wǎng)關(guān)服務(wù)。一起跟隨小編過來看看吧
    2018-05-05
  • Java線程局部變量ThreadLocal的核心原理與正確實踐指南

    Java線程局部變量ThreadLocal的核心原理與正確實踐指南

    ThreadLocal是一個強(qiáng)大而精巧的工具,它通過線程隔離數(shù)據(jù)的方式,優(yōu)雅地解決了特定場景下的線程安全問題,本文給大家介紹Java線程局部變量ThreadLocal的核心原理與正確實踐指南,感興趣的朋友跟隨小編一起看看吧
    2025-11-11
  • Java去除字符串空格的幾種方法簡單舉例

    Java去除字符串空格的幾種方法簡單舉例

    在Java中要去掉字符串中的空格,可以使用多種方法,這篇文章主要給大家介紹了關(guān)于Java去除字符串空格的幾種方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12

最新評論

丰原市| 峨山| 淮阳县| 绥化市| 江北区| 西乡县| 长丰县| 龙门县| 邹城市| 富宁县| 乌兰县| 灵山县| 台东县| 磐石市| 施秉县| 新建县| 陇南市| 平乐县| 巴里| 武冈市| 松原市| 乌兰浩特市| 雅江县| 大安市| 临武县| 平安县| 洛浦县| 凤城市| 彭泽县| 土默特左旗| 普陀区| 钦州市| 临沧市| 光山县| 嘉鱼县| 凭祥市| 天水市| 昌都县| 新营市| 大方县| 富源县|