優先佇列
優先佇列api
class
maxpq ()
} max () {} //返回最大元素
delmax () {} //刪除並返回最大元素
isempty () {} //佇列是否為空
size () {} //返回元素個數
}
堆
定義:在二叉堆中,每個元素都要保證大於等於另兩個特定位置的元素。當一棵二叉樹的每個節點都大於等於它的兩個子節點時,它被稱為堆有序。
class maxpq
this.n = this.maxpq.length-1;
} insert (num)
max ()
delmax ()
let max = this.maxpq[1];
exch(this.maxpq, 1, this.n);
this.maxpq[this.n] = null;
this.n--;
sink(this.maxpq,1);
return max;
} isempty () //佇列是否為空
size () //返回元素個數
}function
exch
(arr, i, j)
function
swim
(arr, k)
}function
sink
(arr, k) ;
if(arr[k] < arr[j])
k = j;
}return k;
}
堆排序function
資料結構 佇列的堆排序
佇列中的資料設為10個,這十個數用 srand time 0 data rand 101 的方法取100以內的隨機數。隨後進行堆排序。輸出堆排序過程中每個調整堆。程式 如下 有點冗長,但是執行無誤 include stdio.h include stdlib.h include conio.h in...
資料結構 堆,堆實現優先順序佇列,堆排序
堆是一種資料結構,底層是一種陣列物件,它可以被視為一棵完全二叉樹結構 最大堆 每個父節點的都大於孩子節點 最小堆 每個父節點的都小於孩子節點。如圖所示是個大堆,只能保證父節點比孩子節點大。所以下標為0是整個堆最大的,但無法確定下標為1,2的資料哪個更大 思想 從第乙個非孩子節點的下標開始向下調整,保...
優先佇列 堆排序
一種支援刪除最大元素和插入元素兩種操作的資料結構叫做優先佇列。實現棧or佇列與實現優先佇列的最大不同在於效能的要求。對於棧和佇列,我們實現能在常數時間完成所有操作 而優先佇列,插入元素和刪除最大元素這兩個操作在最壞情況下需要線性時間完成 優先佇列的各種實現在在最壞情況下執行時間的增長數量級 資料結構...