python實現演算法導論 堆疊和佇列

2021-10-03 08:36:03 字數 2309 閱讀 8015

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 建最大...