請問一下啊 堆排序是怎么回事 是什么意思

2022-12-27 23:11

1個回答
堆排序就是相當于一個排序二叉樹,只是它是根節(jié)點的優(yōu)先級別大于任何兒子的優(yōu)先級別,這樣可以每次刪除根節(jié)點,然后調整整個堆。
program heap;
var a:array[1..10000] of integer;
n,i:integer;
procedure down(i:integer);
var x,j:integer;
begin
x:=a[i];
j:=i*2;
while j<=n do
begin
if a[j]>a[j+1] then j:=j+1;
if a[j]begin
a[i]:=a[j];
i:=j;
j:=i*2;
end else break;
end;
a[i]:=x;
end;
procedure delete(i);
begin
n:=n-1;
if (n=0)or(i=n+1) then exit
else
begin
a[i]:=a[n+1];
down(i);
end;
end;
{====main=====}
begin
readln(n);
for i:=1 to n do read(a[i]);
for i:=n div 2 downto 1 do down(i);
for i:=1 to n do
begin
write(a[1]);
delete(1);
end;
end.
相關問答
堆排序是什么?
1個回答2022-08-28 04:10
堆排序就是利用堆的數(shù)據(jù)結構進行排序,通過調整堆的結構使得關鍵字有一定的順序。有最大堆和最小堆,堆排序在類似topK問題中經常應用,效率比其他內部排序算法高。
堆排序是什么
1個回答2022-09-26 08:20
堆排序就是利用堆的數(shù)據(jù)結構進行排序,通過調整堆的結構使得關鍵字有一定的順序。有最大堆和最小堆,堆排序在類似topK問題中經常應用,效率比其他內部排序算法高。
什么是堆排序?
1個回答2022-09-24 20:35
堆積排序(Heapsort)是指利用堆積樹(堆)這種資料結構所設計的一種排序算法,可以利用數(shù)組的特點快速定位指定索引的元素。 算法思想: (1)堆的定義: 堆是滿足下列性質的數(shù)列{r1, r2, …,...
全文
堆排序的思想方法
1個回答2025-01-01 17:24
主輸油管一定將這些油井等分成兩份,油田為奇數(shù)時有一個油田在主輸油管上。 這樣證明很容易。如果不是這樣的話,將輸油管向油田數(shù)多的那邊移動,總長度一定減少。
誰會堆排序?
1個回答2022-11-15 08:57
自己找一本數(shù)據(jù)結構的書翻一下就知道了。
在快速排序, 堆排序,歸并排序中 哪個是最穩(wěn)定的排序方法?
1個回答2022-09-12 19:25
是歸并排序,我剛剛也做這個題目。 因為堆排序時間復雜度為n*logn,空間復雜度為1,是不穩(wěn)定排序,適合較多情況; 而歸并排序的時間復雜度為n*logn,空間復雜度為n,是穩(wěn)定排序。 快速排序的時間復...
全文
free pacal 堆排序
1個回答2022-07-30 23:56
我編譯了一下, 問題不少。 我建議您重新寫一個, 參照這標準的模板。 算法: 依次加入元素,建立2叉堆; 再從堆底不斷刪除元素,直到堆空; 刪除的元素就會有序。
用堆排序方法給關鍵字序列進行排序,急急??!
1個回答2023-01-31 00:00
首先依次輸入關鍵字,建立堆,此時在數(shù)組的排列為 :2 10 13 15 12 14, 之后便開始每次取最小值放在堆尾,并跟新堆,每步結果依次為 :10 12 13 15 14 2 :12 14 13 ...
全文
堆排序是怎么建堆的 關鍵字序列 42 13 24 91 23 16 05 88是怎樣建堆的
1個回答2022-09-24 10:28
對這些關鍵字先構造一個完全二叉樹(不管大小關系) ,然后從節(jié)點H.length/2到0,依次調整(調用HeapAdjust) void HeapSort ( SqList &H ) { // 對...
全文
排序 排序
1個回答2024-01-22 14:07
2 4 3 6 1 5
熱門問答