1.堆疊:
class
stack
(object):
def__init__
(self)
: self.stack =
self.top =-1
#壓入def
push
(self,value)
: self.top +=
1#判斷堆疊是否為空:
defstack_empty
(self)
:if self.top <0:
return
true
else
:return
false
#彈出def
pop(self)
:if self.stack_empty():
print
('堆疊下溢!'
)else
: self.top -=
1return self.stack.pop(
)def
__call__
(self)
:print
(self.stack)
s = stack(
)s.push(1)
print
(s.pop())
print
(s.pop())
s.push(1)
s.push(2)
s.push(
'3')
s()
2.佇列:
class
queue
(object):
def__init__
(self,n)
: self.length = n
self.queue =
[none]*n
#定義佇列的隊頭和隊尾
self.head, self.tail =0,
0#上溢判斷
defoverflow
(self)
:if self.queue[self.tail]
!=none
:return
true
else
:return
false
#下溢判斷
defunderflow
(self)
:if self.queue[self.head]
==none
:return
true
else
:return
false
#入隊def
enqueue
(self,value)
:if self.overflow():
print
('佇列上溢!'
)else
: self.queue[self.tail]
= value
if self.tail == self.length -1:
self.tail =
0else
: self.tail +=
1#出隊
defdequeue
(self)
:if self.underflow():
print
('佇列下溢!'
)else
: x = self.queue[self.head]
self.queue[self.head]
=none
if self.head == self.length -1:
self.head =
0else
: self.head +=
1return x
def__call__
(self)
:print
(self.queue)
q = queue(3)
q.enqueue(
'1')
q.enqueue(2)
q.enqueue(3)
q.enqueue(4)
q()print
(q.dequeue())
print
(q.dequeue())
print
(q.dequeue())
print
(q.dequeue(
))
演算法導論 堆排序實現
我建立了乙個heap的資料結構,而不是像stl那樣使用函式解決堆排序,當然stl的比較優雅一點,我只是提供第二個思路 ifndef heap sort h define heap sort h include include include ifdef debug include endif deb...
演算法導論堆排序實現
部分有序使用堆排序效率較高,基本有序使用插入排序或氣泡排序效率較高 include include 調整函式要求除了要調整的點,都要滿足堆的性質 void maxheapify int a,int i,int length else 取父節點 左右節點最大值 if right length 1 a ...
演算法導論 堆排序
堆排序演算法 heapsort max heapify過程,其執行時間為 lg n 是保持最大堆性質的關鍵 build max heap過程,以線性時間執行,可以在無序的輸入陣列基礎上構造出最大堆 heapsort過程,執行時間 n lg n 對乙個陣列原地進行排序 heapsort過程 1 建最大...