- 二分查找演算法
def list_search(l,v):
left = 0
right = len(l) -1
while left <= right:
mid = (left + right) // 2
if l[mid] == v:
return mid
elif l[mid] < v:
left = mid +1
else:
right = mid -1
else:
return None
l = list(range(100))
s = list_search(l,50)
print(s)
個人總結:查找的值所在的資料型別中以資料中心的值分割,如果等于則找到,如果小于中心值,查找的值在右部分,重新定義左邊最后一個值,就是中心值加一,大于,值在左,重新定義右邊值,減一,直到找到,否則回傳none,
- 排序演算法
1.冒泡排序:

import random
def bubble_sort(l):
for i in range(len(l)-1):
exchange = False
for x in range(len(l)-i-1):
if l[x] > l[x+1]:
l[x], l[x+1] = l[x+1],l[x]
exchange = True
if not exchange:
return
l = [random.randint(1,10) for i in range(10)]
s = bubble_sort(l)
print(l)
個人總結:比較,i比較幾次,(索引0-9,長度是十個所以減一,不然多回圈一次),減去比較完的次數,在減一,比較大于正序,調換,小于反序,定義一個bool,如果走了調換位置,就設定為True,沒有走的話,就證明已經排序完成了,就直接回傳,
2.選擇排序
def select_sort(l):
for i in range(len(l)-1):
min = i
for x in range(i,len(l)):
if l[x] < l[min]:
min = x
l[i],l[min] = l[min],l[i]
l = [random.randint(1,10) for i in range(10)]
select_sort(l)
print(l)
回圈一個然后和后面的值回圈比較,比我小,換你來當最小的,換位,大,直接換,
3.插入排序
def insert_sort(l):
for i in range(1,len(l)):
tmp = l[i]
j = i-1 #后面的值
while j >=0 and l[j] > tmp:
l[j+1] = l[j] #把j的位置向前面移動一位
j -= 1 #和后面的繼續比較
l[j+1] = tmp #回圈結束條件不成立,索引負數,比j大的直接插
l = [1,6,5,8,9,7,3,4,2]
insert_sort(l)
print(l)
#從第一個值開始比較,第0個是比較物件
快排
def partition(l,left,right):
tmp = l[left]
while left < right:
while left < right and l[right] > tmp :
right -=1
l[left] = l[right]
while left < right and l[left] < tmp :
left += 1
l[right] = l[left]
l[left] = tmp
return left
def quick_sort(l,left,right):
if left < right:
mid = partition(l,left,right)
#遞回
quick_sort(l,left,mid-1) #左邊在重新快排
quick_sort(l,mid+1,right) #右邊在重新快排
l = [6, 3, 4, 8, 5, 2, 9, 1,17,7,10,11]
quick_sort(l,0,len(l)-1)
print(l)
回圈左邊之和右邊的值,拿第一個值,和最右邊的值比較比tmp大向左邊就繼續找,比tmp小就把它換到左邊,左邊的相反操作,最后把tmp放到中間的位置,然后把tmp回傳,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/288843.html
標籤:Python
上一篇:使用 Flask 處理檔案上傳
