堆
2016-04-07 00:01
501 查看
堆
小根堆
<span style="font-size:24px;">const maxn=1000; var n,l,i,temp:longint; a:array[0..maxn] of longint; procedure put(x:longint); var son,temp:longint; begin inc(l); a[l]:=x; son:=l; while (son<>1) and (a[son div 2]>a[son]) do begin temp:=a[son]; a[son]:=a[son div 2]; a[son div 2]:=temp; son:=son div 2; end; end; function get:longint; var fa,son,temp:longint; stop:boolean; begin get:=a[1]; a[1]:=a[l]; dec(l); fa:=1; stop:=false; while (fa*2<=l) and (not stop) do begin if (fa*2+1>l) or (a[fa*2]<a[fa*2+1])</span><span style="font-size:32px;color:#ff0000;">//两个判断一定不能反!</span><span style="font-size:24px;"> then son:=fa*2 else son:=fa*2+1; if a[fa]>a[son] then begin temp:=a[fa];</span><pre name="code" class="delphi">
大根堆
<span style="font-size:32px;">const maxn=1000; var n,l,i,temp:longint; a:array[0..maxn] of longint; procedure put(x:longint); var son,temp:longint; begin inc(l); a[l]:=x; son:=l; while (son<>1) and (a[son div 2]<a[son]) do begin temp:=a[son]; a[son]:=a[son div 2]; a[son div 2]:=temp; son:=son div 2; end; end; function get:longint; var fa,son,temp:longint; stop:boolean; begin get:=a[1]; a[1]:=a[l]; dec(l); fa:=1; stop:=false; while (fa*2<=l) and (not stop) do begin if (fa*2+1>l) or (a[fa*2]>a[fa*2+1])<span style="color: rgb(255, 0, 0); ">//两个判断一定不能反!</span> then son:=fa*2 else son:=fa*2+1; if a[fa]<a[son] then begin temp:=a[fa]; a[fa]:=a[son]; a[son]:=temp; fa:=son; end else stop:=true; end; end; begin read(n); l:=0; for i:=1 to n do begin read(temp); put(temp); end; for i:=1 to n do writeln(get); end. </span>
相关文章推荐
- C#数据结构之顺序表(SeqList)实例详解
- Lua教程(七):数据结构详解
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- C#数据结构之队列(Quene)实例详解
- C#数据结构揭秘一
- C#数据结构之单链表(LinkList)实例详解
- 数据结构之Treap详解
- 用C语言举例讲解数据结构中的算法复杂度结与顺序表
- 一看就懂:图解C#中的值类型、引用类型、栈、堆、ref、out
- C#数据结构之堆栈(Stack)实例详解
- C#数据结构之双向链表(DbLinkList)实例详解
- JavaScript数据结构和算法之图和图算法
- Java数据结构及算法实例:冒泡排序 Bubble Sort
- Java数据结构及算法实例:插入排序 Insertion Sort
- Java数据结构及算法实例:考拉兹猜想 Collatz Conjecture
- java数据结构之java实现栈
- java数据结构之实现双向链表的示例
- Java数据结构及算法实例:选择排序 Selection Sort
- Java数据结构及算法实例:朴素字符匹配 Brute Force
- Java数据结构及算法实例:汉诺塔问题 Hanoi