小黑演算法成長日記1 遞迴選擇排序,全排列,二分查詢

2021-10-05 17:18:09 字數 2564 閱讀 3068

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 對角線垂直方...