一、氣泡排序
arr = [5,3,1,2,4]arr為要排序的列表n =len(arr)
for i in range(n - 1):
for j in range(n - 1 -i):
(i,j)
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
(arr)
print(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 =具體的算術推導過程我在cmd上進行了一遍: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))
後續會更新更多的演算法
幾個演算法實現
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。你可以不斷反覆按照這個規則進行...