棧:是一種容器,可存入資料元素,刪除元素,先進後出
佇列:只允許在一端進行插入操作,而在另一端進行刪除操作的線性表,先進先出
時間複雜度:執行基本運算數量
最壞時間複雜度:演算法完成工作最多需要多少基本操作(提供了一種保障,表示在這裡一定可以完成)
最優時間複雜度:演算法完成工作最少需要多少基本操作、
時間複雜度的計算:
for i. in. rang(0,n):
for. j. in rang(0,n):
c=1000-a-b
if a**2 +b**2==c**2:
print(a,b,c)
分析:迴圈用乘,基本步驟代表1,分之取最大,最後常數項和次要項省略,最後前面寫n
t(n)=n*n*(1+max(1,0)
=n^2*2
=o(n^2)
平均:2者差
氣泡排序:進入迴圈,前乙個與後乙個進行比較,前大後小的話進行交換eg:
#傳入乙個列表
n=len(list)
for i in range(n-
1):
#i代表迴圈次數,n-1就等於迴圈n次
for j in range(
0,n-
1-i):
#j代表列表索引
值,當i=0時,j從0變到n-2時才迴圈完然後i在等於1
# 每次比較一次,它就少一次,所以減j就好
if list[j]>list[j+1]:
list[j],list[j+1]=list[j+1],list[j]
選擇排序:找出最小值,然後進行一一排序
def select_sort(alist):
"""選擇排序"""
n = len(alist)
for j in range(n-1): # j: 0 ~ n-2
min_index = j#定義乙個索引值從0開始
for i in range(j+1, n):
if alist[min_index] > alist[i]:#第乙個值和下乙個值比較,如果第乙個值大,則比較大索引值就發生變化,目的在於找出最小值
min_index = i
alist[j], alist[min_index] = alist[min_index], alist[j]
插入排序:後乙個與前乙個比較,如果後乙個小,就交換位置:
def insert_sort(alist):
"""插入排序"""
n = len(alist)
# 從右邊的無序序列中取出多少個元素執行這樣的過程
for j in range(1, n):
# j = [1, 2, 3, n-1]
# i 代表內層迴圈起始值
i = j
# 執行從右邊的無序序列中取出第乙個元素,即i位置的元素,然後將其插入到前面的正確位置中
while i > 0:
if alist[i] < alist[i-1]:
alist[i], alist[i-1] = alist[i-1], alist[i]
i -= 1
else:
break
二分查詢:在有序的列表中,從中間進行查詢,如果n/2不等於你輸入的值,再進行分解,在查詢
def search(alist,item):
n=len(alist)
if n >0:
mind=n//2
if alist[mind]==item:
return true
elif alist[mind]>item:
return search(alist[:mind],item)
else:
return. search(alist[mind+1:],item)
return false
資料結構與演算法 演算法 演算法和資料結構
資料結構與演算法 演算法 好吧,在這裡,您被優秀或優秀的軟體開發人員所隔開。在這種情況下,我會告訴您一開始或至少在我的情況下,並且我知道大多數時候,對於我認識的大多數人,您會覺得自己是乙個無能的人或白痴。基本上,我怎麼可能不理解這一點,然後您會感到沮喪。在這種情況下,我會告訴您情況並不像您想的那麼糟...
資料結構 資料結構與演算法01
1 求一組整數中的最大值。演算法 基本操作是 比較兩個數的大小 模型 仔細想想 你並不知道這個整數到底是多大?整數過大你該怎麼去表示?2 足協的資料庫管理的程式 演算法 需要管理的專案?如何管理?使用者介面?模型 3 資料與資料結構 資料 所有能被輸入到計算機中,並被計算機處理的符號的集合計算機操作...
資料結構 資料結構與演算法02
1 演算法設計的原則 設計演算法時,通常應考慮達到以下目標 1,正確性 2,可讀性 3,健壯性 4,高效率與低儲存量需求 1,正確性 規格說明 四個層次 a,程式中不含語法錯誤 b,程式對於幾組輸入資料能夠得出滿足要求的結果 c,程式對精心選擇的 典型 苛刻切帶有刁難性的幾組輸入資料能夠得出滿足要求...