二分法查詢
給定乙個排好序(公升序)的列表與待查詢的關鍵字,成功則返回其索引,失敗則返回-1。
def
search
(list1, key)
: left =
0# 設定列表左邊界索引
right =
len(list1)-1
# 設定列表右邊界索引
while left <= right:
# 判斷是否查詢完成
mid =
(left + right)//2
# 中間索引
if key > list1[mid]
:# 若條件成立,則key在右半部分
left = mid +
1elif key < list1[mid]
: right = mid -
1else
:return mid
else
:return
-1
氣泡排序思路:比較兩個相鄰下標所對應的元素,如果符合條件則交換位置
def
bubble
(list1)
:for time in
range(1
,len
(list1)):
# time即迴圈輪數
for index in
range
(len
(list1)
- time)
:if list1[index]
> list1[index +1]
: list1[index]
, list1[index +1]
= list1[index +1]
, list1[index]
return list1
選擇排序思路:從前往後,固定乙個下標,然後使用這個下標對應的元素和列表中其他的元素進行依次比對,如果符合條件則交換位置![快速排序](
def
selection
(list1)
:for key in
range
(len
(list1)-1
):for index in
range
(key +1,
len(list1)):
if list1[key]
> list1[index]
: list1[key]
, list1[index]
= list1[index]
, list1[key]
return list1
氣泡排序,二分法查詢
lst 18,8,16,2,5,7 通過交換的方式.把列表中最大的值一定到最右端 for abc in range len lst 控制內部移動的次數 n 0 while n len lst 1 if lst n lst n 1 lst n lst n 1 lst n 1 lst n n n 1 p...
二分法 氣泡排序 選擇排序
二分法是一種效率比較高的搜尋方法 假設有乙個1 100之間的數字,你來猜這個數是多少,每猜一次可以得到三種 回答 正確 大了或小了。如何保證用最少的次數猜對?很多人會想到先猜50,如果猜大了,說明答案比50小,然後猜25.用這種方法,每次都可以將數字的範圍縮小一半,對於1 100之間的任何數,最多都...
陣列排序(冒泡 選擇 二分法)
氣泡排序 package day0310 public class bubblesortdemo bubblesort array for int i 0 i array.length i public static void bubblesort int array 選擇排序 package da...