亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

了解優先級隊列中的SORT方法

了解優先級隊列中的SORT方法

一只名叫tom的貓 2021-05-14 18:11:12
我有一個同學寫的代碼。問題是我無法理解SORT方法的作用。據我所知,它命令優先級隊列沒有被修改。相反,heapify方法是一種有助于操縱堆的方法(在本例中為MIN HEAP),它允許元素A [i]向下滾動堆,直到到達正確位置為止。我錯了嗎?package priorityQueue;import java.util.ArrayList;import java.util.Comparator;import java.util.HashMap;import java.util.NoSuchElementException;public class BinaryHeap {protected static <P,E> Element<P,E> extractMinimum(ArrayList<Element<P, E>> priorityQueue, Comparator<Element<P,E>> priorityComparator, HashMap<E, Integer> mapping) throws NoSuchElementException {    if (priorityQueue.size() == 0)         throw new NoSuchElementException();    if (priorityQueue.size() == 1)         return priorityQueue.remove(0);    Element<P,E> first = priorityQueue.get(0);    mapping.remove(first.getElement());    Element<P,E> newFirst = priorityQueue.get(priorityQueue.size()-1);    mapping.remove(newFirst.getElement());    priorityQueue.set(0, priorityQueue.remove(priorityQueue.size()-1));    mapping.put(newFirst.getElement() , 0);    heapify(priorityQueue, priorityComparator, mapping,0);    return first;}protected static <P,E> void sort (ArrayList<Element<P, E>> priorityQueue, Comparator<Element<P,E>> priorityComparator, HashMap<E, Integer> mapping, int index) {    int i = index;    while(i > 0)    {        int middle = (i - 1)/2;        Element<P,E> element = priorityQueue.get(i);        Element<P,E> parent = priorityQueue.get(middle);        if(priorityComparator.compare(element, parent)<0)         {            mapping.replace(element.getElement(), middle);            mapping.replace(parent.getElement(), i);            priorityQueue.set(i, parent);            priorityQueue.set(middle, element);            i = middle;        }         else             break;    }}
查看完整描述

1 回答

  • 1 回答
  • 0 關注
  • 217 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號