我有一篇十分詳細!python手寫經典算法詳解(一)的博客,訪問量挺大的,也有不少人收藏了。因此,我決定將源碼清晰地寫在這裏。
冒泡排序
def Bubble(arr):
for n in range(len(arr)-2):
for x in range(0,len(arr)-1-n):
a = arr[x]
b = arr[x+1]
if a>b:
arr[x],arr[x+1]=arr[x+1],arr[x]
return arr
選擇排序
def FindMinNum(arr):
minIndex = 0
for x in range(0,len(arr)):
if arr[x]<arr[minIndex]:
minIndex = x
return minIndex
def Selection(arr):
for x in range(0,len(arr)):
a = FindMinNum(arr[x:]) #已經排好序的數後面
arr[a+x],arr[x] = arr[x],arr[a+x] #交換
return arr
插入排序
def insertSort(arr):
for x in range(1,len(arr)):
while x>0:
if arr[x]<arr[x-1]:
arr[x],arr[x-1] = arr[x-1],arr[x]
x -= 1
else:
break
return arr
線性查找
def Linear(arr,number):
for x in range(0,len(arr)):
if arr[x]==number:
return x
二分查找
def Binary(arr,number):
while True:
m = int((l+r)/2) #Middle index
n = arr[m] #Middle number
if number==n:
return m
if number > n:
l = m
if number < n:
r = m