class stack():
def __init__(self): # 例項化乙個空棧
self.items = # 容器
def push(self,item): # item就是向棧中新增的元素(從棧頂新增到棧底)
def pop(self):
return self.items.pop()
def isempty(self):
return self.items ==
def size(self):
return len(self.items)
# 例項化乙個空棧
stack = stack()
stack.push(1)
stack.push(2)
stack.push(3)
print(stack.pop()) # 3
print(stack.pop()) # 2
print(stack.pop()) # 1
# 佇列實現思路:先進先出,將元素存於列表中,新增時永遠插在索引為0的位置,取出時永遠取索引的最後乙個
class queue():
def __init__(self): # 例項化乙個空佇列
self.items =
def enqueue(self,item): # 新增元素
self.items.insert(0,item)
def dequeue(self): # 取元素
return self.items.pop()
def isempty(self): # 是否為空
return self.items ==
def size(self): # 判斷長度
return len(self.items)
q = queue()
q.enqueue(1)
q.enqueue(2)
q.enqueue(3)
print(q.dequeue())
print(q.dequeue())
print(q.dequeue())
案例:燙手的山芋
# 佇列實現思路:先進先出,將元素存於列表中,新增時永遠插在索引為0的位置,取出時永遠取索引的最後乙個
class queue():
def __init__(self): # 例項化乙個空佇列
self.items =
def enqueue(self,item): # 新增元素
self.items.insert(0,item)
def dequeue(self): # 取元素
return self.items.pop()
def isempty(self): # 是否為空
return self.items ==
def size(self): # 判斷長度
return len(self.items)
kids = ['a','b','c','d','e','f']
# 將孩子加入到佇列中
kids_queue = queue() # 例項化乙個空佇列
for kid in kids:
kids_queue.enqueue(kid)
while kids_queue.size() > 1: # 長度為1時結束
for i in range(6):
first_kid = kids_queue.dequeue()
kids_queue.enqueue(first_kid)
# 6次傳遞結束之後需要將隊頭孩子刪除出佇列
kids_queue.dequeue()
print('獲勝的孩子是:',kids_queue.dequeue())
例題:給定列表,用二分查詢,查詢元素7
# 二分查詢的前提是序列有序,所以先排序
# lst = [1,3,11,18,4,5,7,9]
# print(sorted(lst))
def find(alist, item):
# left,right表示列表的起始索引
left = 0
right = len(alist) - 1
isfind = false # 是否找到的標識
while left <= right:
# 中間值的索引,地板除
mid_index = (right + left) // 2
# 中間值大於要查詢的值,right移動
if alist[mid_index] > item:
right = mid_index - 1
else:
# 查詢到,修改isfind,並終止迴圈
if alist[mid_index] == item:
isfind = true
break
else:
left = mid_index + 1
return isfind
alist = [1, 3, 4, 5, 7, 9]
print(find(alist, 7))
查詢演算法 二分查詢
利用二分查詢演算法查詢某乙個元素,前提條件是該被查詢的元素是乙個已經有序的陣列。二分查詢的思想是將陣列元素的最高位 high 和最低位 low 進行標記,取陣列元素的中間 mid 和和要查詢的值 key 進行比較,如果目標值比中間值要大,則將最低位設定為mid 1,繼續進行查詢。如果目標值小於中間值...
查詢演算法 二分查詢
二分查詢的思路是很簡單的,前提是這組資料是有順序的。思路是從中間找乙個數,判斷大小,如果數比中間數大,說明在中間數到結尾的數中,如果小於,則說明在開始和中間數之間,經過多次相同操作,就可以得到我們想查詢的數時間複雜度就是 o logn 非遞迴的實現 const testarr let i 0whil...
查詢演算法 二分查詢
二分查詢是乙個常用的查詢演算法,其原理在於通過不斷切分乙個規則排序,對半的去尋找目標元素所在的區間與位置。但是其有乙個前提,那就是資料結構需要是順序儲存結構,並且關鍵字大小有序排列。例子如下 例 有乙個數列 12,23,45,56,67,89 請使用二分查詢找到56的位置 解 首先mid 0 5 2...