国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

「數(shù)據(jù)結(jié)構(gòu)」優(yōu)先級隊列

這篇具有很好參考價值的文章主要介紹了「數(shù)據(jù)結(jié)構(gòu)」優(yōu)先級隊列。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

??個人主頁:Ice_Sugar_7
??所屬專欄:Java數(shù)據(jù)結(jié)構(gòu)
??歡迎點贊收藏加關(guān)注哦!

??前言

優(yōu)先級隊列底層是用堆實現(xiàn)的,關(guān)于堆的實現(xiàn),之前的文章已經(jīng)詳細介紹過了,文章鏈接:二叉樹1:堆的實現(xiàn)

??構(gòu)造方法

方法 功能
PriorityQueue() 創(chuàng)建一個空的優(yōu)先級隊列,默認容量是11
PriorityQueue(int initialCapacity) 創(chuàng)建一個初始容量為initialCapacity的優(yōu)先級隊列(注意:initialCapacity不能小于1,否則會拋IllegalArgumentException異常)
PriorityQueue(Collection<? extends E> c) 將一個包含指定類型元素的集合c添加到新建的PriorityQueue中
PriorityQueue(int initialCapacity, Comparator<? super E> comparator) 使用比較器來初始化PriorityQueue(可以不傳initialCapacity,此時使用默認容量)

注意:要將自定義類型的對象存放到PriorityQueue時,通常需要傳入一個比較器,重寫compare方法來定義對象之間的優(yōu)先級順序

在Java中,PriorityQueue默認是小堆,如果要將其轉(zhuǎn)化為大堆,就要用比較器初始化PriorityQueue文章來源地址http://www.zghlxwxcb.cn/news/detail-829178.html

public class MaxHeapExample {
    public static void main(String[] args) {
        // 創(chuàng)建一個Comparator,定義從大到小的比較規(guī)則
        Comparator<Integer> maxHeapComparator = new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2 - o1; // 從大到小排序
            }
        };

        // 使用maxHeapComparator創(chuàng)建一個大堆PriorityQueue
        PriorityQueue<Integer> maxHeap = new PriorityQueue<>(maxHeapComparator);

        // 向大堆中添加元素
        maxHeap.add(3);
        maxHeap.add(1);
        maxHeap.add(5);
        maxHeap.add(2);

        // 此時PriorityQueue中的元素將按照大堆的規(guī)則排列
        // 輸出:[5, 3, 1, 2]
        System.out.println(maxHeap);
    }
}

??基本方法

方法 功能
boolean offer(E e) 插入元素e,插入成功返回true。如果e對象為空,則拋出NullPointerException異常(即不能插入null)
E peek() 獲取優(yōu)先級最高的元素(就是堆頂元素),如果優(yōu)先級隊列為空,返回null
E poll() 移除優(yōu)先級最高的元素并返回,如果優(yōu)先級隊列為空,返回null
int size() 獲取有效元素的個數(shù)
void clear() 清空
boolean isEmpty() 檢測優(yōu)先級隊列是否為空,若為空,則返回true

??注意事項

  • PriorityQueue中放置的元素必須要能夠比較大小,不能插入無法比較大小的對象,否則會拋出ClassCastException異常
  • 不能插入null對象,否則會拋出NullPointerException
  • 沒有容量限制,可以插入任意多個元素,因為其內(nèi)部可以自動擴容
  • 插入和刪除元素的時間復(fù)雜度為O(logN)
  • PriorityQueue默認情況下是小堆——即每次獲取到的元素都是最小的元素

到了這里,關(guān)于「數(shù)據(jù)結(jié)構(gòu)」優(yōu)先級隊列的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 數(shù)據(jù)結(jié)構(gòu)與算法-優(yōu)先級隊列

    Gitee上開源的數(shù)據(jù)結(jié)構(gòu)與算法代碼庫:數(shù)據(jù)結(jié)構(gòu)與算法Gitee代碼庫 優(yōu)先級隊列,按照優(yōu)先級別依次輸出 計算機科學中,堆是一種基于樹的數(shù)據(jù)結(jié)構(gòu),通常用 完全二叉樹 實現(xiàn)。堆的特性如下 在大頂堆中,任意節(jié)點 C 與它的父節(jié)點 P 符合 P . v a l u e ≥ C . v a l u e P.value geq C.val

    2024年02月13日
    瀏覽(36)
  • 數(shù)據(jù)結(jié)構(gòu) 之 優(yōu)先級隊列(堆) (PriorityQueue)

    數(shù)據(jù)結(jié)構(gòu) 之 優(yōu)先級隊列(堆) (PriorityQueue)

    ??歡迎大家觀看AUGENSTERN_dc的文章(o゜▽゜)o☆?? ??感謝各位讀者在百忙之中抽出時間來垂閱我的文章,我會盡我所能向的大家分享我的知識和經(jīng)驗?? ??希望我們在一篇篇的文章中能夠共同進步?。?! ??個人主頁:AUGENSTERN_dc ??個人專欄:C語言?|?Java | 數(shù)據(jù)結(jié)構(gòu) ?個人

    2024年03月20日
    瀏覽(27)
  • 數(shù)據(jù)結(jié)構(gòu)之優(yōu)先級隊列【堆】(Heap)

    數(shù)據(jù)結(jié)構(gòu)之優(yōu)先級隊列【堆】(Heap)

    目錄 1. 優(yōu)先級隊列(Priority Queue) 2.堆的概念 3.堆的存儲方式 4.堆的創(chuàng)建 5.用堆模擬實現(xiàn)優(yōu)先級隊列 ?6.PriorityQueue常用接口介紹 6.1?PriorityQueue的特點 6.2?PriorityQueue幾種常見的構(gòu)造方式 7.top-k問題 8.堆排序 本篇主要內(nèi)容總結(jié) (1)優(yōu)先級隊列底層是堆來實現(xiàn)的 (2)堆的本質(zhì)是

    2024年02月01日
    瀏覽(51)
  • 【一起學習數(shù)據(jù)結(jié)構(gòu)與算法】優(yōu)先級隊列(堆)

    【一起學習數(shù)據(jù)結(jié)構(gòu)與算法】優(yōu)先級隊列(堆)

    如果我們給每個元素都分配一個數(shù)字來標記其優(yōu)先級,不妨設(shè)較小的數(shù)字具有較高的優(yōu)先級,這樣我們就可以在一個集合中訪問優(yōu)先級最高的元素并對其進行查找和刪除操作了。這樣,我們就引入了 優(yōu)先級隊列 這種數(shù)據(jù)結(jié)構(gòu)。 優(yōu)先級隊列(priority queue) 是0個或多個元素的集

    2024年01月19日
    瀏覽(24)
  • 【數(shù)據(jù)結(jié)構(gòu)】 優(yōu)先級隊列(堆)與堆的建立

    【數(shù)據(jù)結(jié)構(gòu)】 優(yōu)先級隊列(堆)與堆的建立

    前面介紹過隊列, 隊列是一種先進先出(FIFO)的數(shù)據(jù)結(jié)構(gòu) ,但有些情況下,操作的數(shù)據(jù)可能帶有優(yōu)先級,一般出隊列時,可能需要優(yōu)先級高的元素先出隊列,該中場景下,使用隊列顯然不合適。 比如:在手機上玩游戲的時候,如果有來電,那么系統(tǒng)應(yīng)該優(yōu)先處理打進來的電話

    2024年02月10日
    瀏覽(19)
  • 數(shù)據(jù)結(jié)構(gòu) - 6(優(yōu)先級隊列(堆)13000字詳解)

    數(shù)據(jù)結(jié)構(gòu) - 6(優(yōu)先級隊列(堆)13000字詳解)

    堆分為兩種:大堆和小堆。它們之間的區(qū)別在于元素在堆中的排列順序和訪問方式。 大堆(Max Heap): 在大堆中,父節(jié)點的值比它的子節(jié)點的值要大。也就是說,堆的根節(jié)點是堆中最大的元素。大堆被用于實現(xiàn)優(yōu)先級隊列,其中根節(jié)點的元素始終是隊列中最大的元素。 大堆

    2024年02月08日
    瀏覽(25)
  • 【數(shù)據(jù)結(jié)構(gòu)與算法】03 隊列(順序隊列--循環(huán)隊列--優(yōu)先級隊列--鏈隊列)

    【數(shù)據(jù)結(jié)構(gòu)與算法】03 隊列(順序隊列--循環(huán)隊列--優(yōu)先級隊列--鏈隊列)

    隊列( queue )是一種常見的數(shù)據(jù)結(jié)構(gòu),它遵循先進先出(FIFO)的原則。隊列可以理解為一個具有兩個端點的線性數(shù)據(jù)結(jié)構(gòu),其中一個端點稱為\\\"隊尾\\\"(rear),用于插入新元素,另一個端點稱為\\\"隊首\\\"(front),用于移除元素。新元素被插入到隊尾,而最早插入的元素總是在隊

    2024年02月08日
    瀏覽(21)
  • 【數(shù)據(jù)結(jié)構(gòu)初階】——第八節(jié).優(yōu)先級隊列(小根堆的模擬實現(xiàn))

    【數(shù)據(jù)結(jié)構(gòu)初階】——第八節(jié).優(yōu)先級隊列(小根堆的模擬實現(xiàn))

    ?作者簡介:大家好,我是未央; 博客首頁: 未央.303 系列專欄:Java初階數(shù)據(jù)結(jié)構(gòu) 每日一句:人的一生,可以有所作為的時機只有一次,那就是現(xiàn)在?。?! 目錄 文章目錄 前言 引言 一、堆的概念 二、堆的性質(zhì)? 三、堆的操作 3.1 向下調(diào)整算法 3.2?小根堆的創(chuàng)建 3.3?向上調(diào)整

    2024年02月07日
    瀏覽(31)
  • 經(jīng)典TopK問題、優(yōu)先級隊列 與 堆的糾葛一文為你解惑——數(shù)據(jù)結(jié)構(gòu)

    經(jīng)典TopK問題、優(yōu)先級隊列 與 堆的糾葛一文為你解惑——數(shù)據(jù)結(jié)構(gòu)

    前言: 本篇文章以 TopK 問題為引,具體闡述了 PriorityQueue 實現(xiàn)的基本邏輯——堆 數(shù)據(jù)結(jié)構(gòu),以及PriorityQueue 的常用方法。如有問題歡迎看官朋友指正,如果覺得文章還不錯的話,求點贊、收藏、評論 三連。 重點: 堆的基本實現(xiàn)邏輯 PriorityQueue 運用和源碼分析 TopK 問題的解法

    2023年04月22日
    瀏覽(18)
  • Java優(yōu)先級隊列-堆

    大家好,我是曉星航。今天為大家?guī)淼氖?Java優(yōu)先級隊列(堆) 的講解!?? 使用數(shù)組保存二叉樹結(jié)構(gòu),方式即將二叉樹用 層序遍歷 方式放入數(shù)組中。 一般只適合表示完全二叉樹,因為非完全二叉樹會有空間的浪費。 這種方式的主要用法就是堆的表示。 已知雙親(parent)的下

    2023年04月16日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包