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

Java數(shù)組模擬優(yōu)先級隊列數(shù)據(jù)結構的實例

 更新時間:2016年04月21日 08:55:15   作者:匆忙擁擠repeat  
這篇文章主要介紹了Java數(shù)組模擬優(yōu)先級隊列數(shù)據(jù)結構的實例,優(yōu)先級隊列中的元素會被設置優(yōu)先權,本文的例子借助了Java中的TreeSet和TreeMap,需要的朋友可以參考下

優(yōu)先級隊列
如果我們給每個元素都分配一個數(shù)字來標記其優(yōu)先級,不妨設較小的數(shù)字具有較高的優(yōu)先級,這樣我們就可以在一個集合中訪問優(yōu)先級最高的元素并對其進行查找和刪除操作了。這樣,我們就引入了優(yōu)先級隊列 這種數(shù)據(jù)結構。 優(yōu)先級隊列(priority queue) 是0個或多個元素的集合,每個元素都有一個優(yōu)先權,對優(yōu)先級隊列執(zhí)行的操作有(1)查找(2)插入一個新元素 (3)刪除 一般情況下,查找操作用來搜索優(yōu)先權最大的元素,刪除操作用來刪除該元素 。對于優(yōu)先權相同的元素,可按先進先出次序處理或按任意優(yōu)先權進行。

Java數(shù)組模擬隊列
隊列是一種特殊的線性表,它只允許在表的前端進行刪除操作,而在表的后端進行插入操作。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。這也就是我們平常經(jīng)常用說到的先進先出原則(FIFO)。Java 中的 List 就可以作為隊列來使用,在隊列尾部添加元素則使用 list.add 方法,從隊列頭部刪除元素則使用 list.remove 方法。

Java數(shù)組模擬優(yōu)先級隊列結構實例:

package datastruct; 
 
import java.util.Arrays; 
import java.util.Comparator; 
 
/** 
 * 用數(shù)組模擬 優(yōu)先級隊列 優(yōu)先級高的排前、先出 線性表結構 
 * 類似使用了比較器的 TreeSet、TreeMap 
 */ 
public class SimulatePriorityQueue { 
   
  public static void main(String[] args) { 
    SimulatePriorityQueue queue = new SimulatePriorityQueue(4); 
//   SimulateQueue queue = new SimulateQueue(); 
//   System.out.println("取出元素:" + queue.remove()); 
    queue.insert(1); 
    queue.insert(3); 
    queue.insert(2); 
    queue.insert(5); 
    queue.insert(4); 
    System.out.println("size:" + queue.size()); 
    System.out.println("peek:" + queue.peek()); 
    System.out.println("取出元素:" + queue.remove()); 
    System.out.println("取出元素:" + queue.remove()); 
    System.out.println("取出元素:" + queue.remove()); 
    System.out.println("取出元素:" + queue.remove()); 
//   System.out.println("取出元素:" + queue.remove()); 
    System.out.println("size:" + queue.size()); 
    System.out.println(); 
  } 
 
  private int mSize = 3;     //大小 
  private int[] mArray;    //數(shù)組 
  private int mNextItem;     //下一個位置,也可當作 當前的元素數(shù) 
   
  public SimulatePriorityQueue() { 
    mArray = new int[mSize]; 
    mNextItem = 0; 
  } 
  public SimulatePriorityQueue(int size) { 
    this.mSize = size; 
    mArray = new int[mSize]; 
    mNextItem = 0; 
  } 
  /** 
   * 插入元素 
   * @param item 
   */ 
  public void insert(int item) { 
    if (!isFull()) { 
      mArray[mNextItem++] = item; 
      for (int i = 0; i < mNextItem; i++) {//冒泡排序 
        for (int j = 0; j < mNextItem - 1; j++) { 
          if (mArray[j] > mArray[j + 1]) { 
            mArray[j] = mArray[j + 1] + 0 * (mArray[j + 1] = mArray[j]); 
            System.out.println(Arrays.toString(mArray)); 
          } 
        } 
      } 
      System.out.println(Arrays.toString(mArray)); 
    } else { 
      System.out.println("----不能插入元素了,隊列已滿----"); 
    } 
  } 
  /** 
   * 移出元素 先進先出 
   * @return 
   */ 
  public int remove() { 
    if (!isEmpty()) { 
      return mArray[--mNextItem]; 
    } else { 
      throw new IllegalArgumentException("沒有元素可以取出了"); 
    } 
  } 
  /** 
   * 查看前面的元素 
   * @return 
   */ 
  public int peek() { 
    return mArray[mNextItem - 1]; 
  } 
  /** 
   * 是否為空 
   * @return 
   */ 
  public boolean isEmpty() { 
    return mNextItem == 0; 
  } 
  /** 
   * 是否滿 
   * @return 
   */ 
  public boolean isFull() { 
    return mNextItem == mSize; 
  } 
  /** 
   * size 
   * @return 
   */ 
  public int size() { 
    return mNextItem; 
  } 
   
} 

輸出結果:

[1, 0, 0, 0]
[1, 3, 0, 0]
[1, 2, 3, 0]
[1, 2, 3, 0]
[1, 2, 3, 5]
----不能插入元素了,隊列已滿----
size:4
peek:5
取出元素:5
取出元素:3
取出元素:2
取出元素:1
size:0

相關文章

  • mybatis-plus 批量插入示例代碼

    mybatis-plus 批量插入示例代碼

    正常我們使用mybatis-plus插入的時候,首先想到的是saveBatch方法,不過看了下打印出來的sql和底層代碼,才發(fā)現(xiàn)它并不是真正的批量插入這篇文章主要介紹了mybatis-plus 批量插入示例,需要的朋友可以參考下
    2023-07-07
  • 關于接口ApplicationContext中的getBean()方法使用

    關于接口ApplicationContext中的getBean()方法使用

    這篇文章主要介紹了關于接口ApplicationContext中的getBean()方法使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Java獲取客戶端真實IP地址過程解析

    Java獲取客戶端真實IP地址過程解析

    這篇文章主要介紹了Java獲取客戶端真實IP地址過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • logstash將mysql數(shù)據(jù)同步到elasticsearch方法詳解

    logstash將mysql數(shù)據(jù)同步到elasticsearch方法詳解

    這篇文章主要為大家介紹了logstash將mysql數(shù)據(jù)同步到elasticsearch方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • springboot Controller直接返回String類型帶來的亂碼問題及解決

    springboot Controller直接返回String類型帶來的亂碼問題及解決

    文章介紹了在Spring Boot中,當Controller直接返回String類型時可能出現(xiàn)的亂碼問題,并提供了解決辦法,通過在`application.yaml`中設置請求和響應的編碼格式,并在自定義配置類中進行配置,可以有效解決這一問題
    2024-11-11
  • 必須詳細與全面的Java開發(fā)環(huán)境搭建圖文教程

    必須詳細與全面的Java開發(fā)環(huán)境搭建圖文教程

    本篇文章內容包括:Linux理論與實操,MySQL實操,JDK實操,Tomcat實操和Tomcat實操,需要的朋友可以參考下
    2019-11-11
  • Java基礎教程之包(package)

    Java基礎教程之包(package)

    這篇文章主要介紹了Java基礎教程之包(package),本文詳細講解了包的創(chuàng)建、使用等方法,需要的朋友可以參考下
    2014-08-08
  • springboot整合mail實現(xiàn)郵箱的發(fā)送功能

    springboot整合mail實現(xiàn)郵箱的發(fā)送功能

    本文分步驟給大家介紹springboot整合mail實現(xiàn)郵箱的發(fā)送功能,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-09-09
  • logback的isDebugEnabled日志配置級別源碼解析

    logback的isDebugEnabled日志配置級別源碼解析

    這篇文章主要為大家介紹了logback的isDebugEnabled日志配置級別源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • Java 模擬cookie登陸簡單操作示例

    Java 模擬cookie登陸簡單操作示例

    這篇文章主要介紹了Java 模擬cookie登陸簡單操作,結合實例形式分析了Java 模擬cookie登陸的相關原理與基本實現(xiàn)技巧,需要的朋友可以參考下
    2020-03-03

最新評論

奉化市| 弋阳县| 石泉县| 浦县| 辽中县| 谢通门县| 连州市| 油尖旺区| 南通市| 保山市| 万荣县| 公安县| 开江县| 江川县| 府谷县| 久治县| 化德县| 嵊州市| 耒阳市| 甘谷县| 大厂| 兴隆县| 望城县| 五台县| 五常市| 湟源县| 南投市| 香河县| 定远县| 逊克县| 通河县| 读书| 大港区| 手游| 航空| 大名县| 浪卡子县| 梁平县| 聂荣县| 沙雅县| 马山县|