Python實現的幾個演算法

2022-06-24 13:36:11 字數 1759 閱讀 7561

一、氣泡排序

arr = [5,3,1,2,4]

n =len(arr)

for i in range(n - 1):

for j in range(n - 1 -i):

print

(i,j)

if arr[j] > arr[j + 1]:

arr[j], arr[j + 1] = arr[j + 1], arr[j]

print

(arr)

print(arr)

arr為要排序的列表

該**實現的分析過程

這是我在本子上的具體推導過程。

需要注意的是,巢狀for迴圈,會先把子迴圈裡的i執行到條件結束後再進行外迴圈的i值變數

即當i = 0的時候, j第一次迴圈為0.  j=0的**執行結束後,j = 1,i=0不變

然後j=2,j=3, 因為range(n-1-i),n=5,即為range(4)  ---->0,1,2,3。

執行結束後,i 才會變成1.再次 進入j迴圈。 j = range(n-1-1) = range(3) ----->0,1,2

具體的推到過程圖上很清晰易懂

二、移動陣列

輸入 :[1,2,3,4,5,6,7]    k = 3

輸出 :  [5,6,7,1,2,3,4] 

k = 3arr = [1, 2, 3, 4, 5, 6, 7]

lens =len(arr)

k = k % lens #

因為k不一定小於lens,所以當k>lens時,位移k-lens與k的效果相同

while k !=0:

temp = arr[lens - 1]

i = lens - 1

print("i="

,i)

while i >0:

arr[i] = arr[i - 1]

i = i - 1

print("

i'="

,i) arr[0] =temp

#print(arr)

k = k - 1

print("k="

,k)print(arr)

具體的分析過程如下:

需要注意的是  while迴圈同理for迴圈,外迴圈的乙個i值變化會等待子迴圈的值變化乙個週期後再變化。

k為偏移量

三、python實現十進位制數轉二進位制(非bin()方法)

a = 26tw =

while

true:

s = a//2n = a%2tw = tw+[n]

if s ==0:

break

a =s

tw.reverse()

res = [str(i) for i in

tw]#

print(res)

print("

tw:",''.join(res))

具體的算術推導過程我在cmd上進行了一遍:

後續會更新更多的演算法

幾個演算法實現

1 楊輝三角 function n else echo arr i j t echo 2 求牛的數目 有一母牛,到4歲可生育,每年一頭,所生均是一樣的母牛,到15歲絕育,不再能生,20歲死亡,問n年後有多少頭牛 function crow n,num if i 20 return num funct...

幾個排序演算法的Java實現

package sort public class sort 使用隨機數初始化陣列 public static void inite int list 列印陣列 public static void display int list system.out.println 插入排序o n 將新的元素插...

js實現幾個演算法題

題目 字串消除 給定乙個字串,僅由a,b,c 3種小寫字母組成。當出現連續兩個不同的字母時,你可以用另外乙個字母替換它,如 有ab或ba連續出現,你把它們替換為字母c 有ac或ca連續出現時,你可以把它們替換為字母b 有bc或cb 連續出現時,你可以把它們替換為字母a。你可以不斷反覆按照這個規則進行...