# 遞歸 lst = [2, 3, 5, 10, 15, 16, 18, 22, 26, 30, 32, 35, 41, 42, 43, 55, 56, 66, 67, 69, 72, 76, 82, 83, 88] def func(num, left, right): if left <= right: mid = (right + left) // 2 if lst[mid] > num: right = mid - 1 return func(num, left, right) if lst[mid] < num: left = mid + 1 return func(num, left, right) if lst[mid] == num: print("找到此數字") return mid else: print("列表中沒有此數字") return -1 func(69, 0, len(lst)-1) # 循環 left = 0 right = len(lst) - 1 num = int(input("請輸入查找的數字:")) while left <= right: mid = (left + right)//2 if lst[mid] < num: left = left + 1 if lst[mid] > num: right = right -1 if lst[mid] == num: print("找到此數字") break else: print("列表中沒有次數字")
lst = [666, 555, 444, 333, 2, 1] n = 0 # 用於比較是否完成(len(lst)-1)!此交換 m = 1 # 用於每輪比較都比上上輪少一次 sum = 0 # 比較循環的總數 l = 1 # 計算循環的總數 k = 0 # k 與 k+1 位置的比較交換 while l < len(lst): # sum爲須要交換的最屢次數=(len(lst)-1)! sum = sum + l l += 1 while n < sum: while k < len(lst) - m: # 第一輪須要比較len(lst)-1次,下一輪須要比較len(lst)-2次.以此類推 if lst[k] > lst[k + 1]: lst[k], lst[k + 1] = lst[k + 1], lst[k] k += 1 # 大於交換 k+1 else: k += 1 # 小於或等於不變 k+1 n += 1 # 循環次數加1 m += 1 # 下一輪的比較次數減一次 len(lst) - m k = 0 # k置零從頭開始比較冒泡 print(lst)
def quicksort(list): if len(list) < 2: return list else: mid_num = list[0] large_num = [i for i in list[1:] if i > mid_num] sm_num = [i for i in list[1:] if i <= mid_num] result = quicksort(sm_num) + [mid_num] + quicksort(large_num) return result