1.遞迴選擇排序
# 遞迴選擇排序
defselectsort
(arr,i)
:if i ==
len(arr)-1
:#遞迴出口
return
else
:#子問題處理
min = arr[i]
temp = i
for j in
range
(i+1
,len
(arr)):
if arr[j]
< min:
#計算子問題最小值
min = arr[j]
temp = j
if temp != i:
arr[temp]
,arr[i]
= arr[i]
,arr[temp]
selectsort(arr,i+1)
#拋給下乙個子問題
#呼叫方法
arr =[2
,3,1
,7,1
,3,4
]selectsort(arr,0)
print
('遞迴選擇排序後結果:'
,arr)
#結果:
"""遞迴選擇排序後結果: [1, 1, 2, 3, 3, 4, 7]
"""
2.全排列問題(固定位置放元素法)
# 固定位置放元素
defperm1
(arr,m)
:if m ==
len(arr)-1
:print
(arr)
else
:for i in
range
(m,len
(arr)):
arr[m]
,arr[i]
= arr[i]
,arr[m]
perm1(arr,m+1)
arr[m]
,arr[i]
= arr[i]
,arr[m]
arr =
[i for i in
range(3
)]perm1(arr,0)
#結果:
"""[0, 1, 2]
[0, 2, 1]
[1, 0, 2]
[1, 2, 0]
[2, 1, 0]
[2, 0, 1]
"""
3.全排列問題(固定元素放位置法)
# 固定元素放位置
arr =[4
,5,6
]index =[-
1]*len
(arr)
defperm2
(index,m)
:if m ==
len(index)
:#定義遞迴出口,當被排列元素索引越界時列印當前排列結果
print
([arr[i]
for i in index]
)else
:#丟擲子問題:將索引為m的元素進行插空列舉
for i in
range(0
,len
(index)):
if index[i]==-
1:index[i]
= m perm2(index,m+1)
index[i]=-
1#將當前插入位置的索引清楚,準備將其插到下乙個位置
perm2(index,0)
#結果:
"""[4, 5, 6]
[4, 6, 5]
[5, 4, 6]
[6, 4, 5]
[5, 6, 4]
[6, 5, 4]
"""
4.二分查詢
#二分查詢
defbinarysearch
(arr,left,right,x)
:while left <= right:
mid =
int(
(left+right)/2
)#中間值的索引
if arr[mid]
== x:
return mid
elif arr[mid]
> x:
right = mid -
1else
: left = mid +
1return-1
arr =[2
,5,12
,56,100
,788
,1234
]print
(binarysearch(arr,0,
len(arr),12
))print
([binarysearch(arr,0,
len(arr)
,x)for x in arr]
)#結果:
"""2
[0, 1, 2, 3, 4, 5, 6]
"""
小黑演算法成長日記23 堆排序
arr 2,5,4,2,1,22,4,5,3,87,3,22 def adjustheap arr,length,i 調整新新增arr i 元素後,繼續調整為大根堆 temp arr i 將arr i 存入temp k 2 i 1 從孩子中進行搜尋 while k length if k 1 len...
成長日記 1
四五年了,從來不關心綜藝 電視劇集什麼的我,今天突發奇想,看了吐槽大會第三季最後一期。這一期,歐陽娜娜突然又闖進我的視線,對這個名字,我以前只是聽過,也只是知道她好像跟我同歲。於是二話不說,到知乎去翻看大家對她的評價。當然,有好有壞。總體來說,她的畫像就是 藝術世家出身 父親是台灣政治人物 大提琴拉...
小黑演算法成長日記3 矩陣最優乘法順序
p 30 35,15 5,10 20,25 def function p n len p 1 m 0 n 1 for i in range n 1 動態規劃最優乘法次數記錄表 s 0 n 1 for i in range n 1 矩陣劃分位置記錄表 for r in range 1 n 對角線垂直方...