傲梦python笔试题_python笔试题
冒泡排序的原理:每次對相鄰的兩個元素進行比較,若前者大于后者,這將兩者的位置交換。第一輪就可以將最大的元素置于列表的最后。幾輪循環
冒泡排序的前提條件:有序的列表
import unittest
# 冒泡排序
def bubble_sort(arr):
for i in range(len(arr) - 1): #這個循環負責設置冒泡排序進行的次數
for j in range(len(arr) - 1 - i): #j為下標
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
return arr
class SortTesrCase(unittest.TestCase):
def test_bubble_sort(self):
test_data_1 = [4,5,1,2,3]
copy_test_data_1 = test_data_1[:]
bubble_sort(test_data_1)
copy_test_data_1.sort()
self.assertEqual(test_data_1,copy_test_data_1)
if __name__ == '__main__':
unittest.main()
二分查找
有序列表中,順序查找需要從一端到另一端按照順序進行查找,最多需要比較n次。二分查找從中間項開始
如果該項是我們目標項,則完成查找;如果目標項大于中間項,則可以消除中間項及比中間項目小的那一部分;反之,消除中間項目及比中間項目比較大的那一部分,之后再次重復上面過程。
import unittest
def bin_search(arr, target):
length = len(arr)
mid = length // 2 # 找到中間元素
if (length == 1 and arr[0] != target) or length == 0 : # 目標元素不存在
return False
if arr[mid] == target: # 如果該元素等于目標元素
return True
if target > arr[mid]: # 如果目標元素大于中間元素
print(arr[mid+1:])
return bin_search(arr[mid+1:], target) # 在列表的右半邊遞歸進行二分查找
else: # 小于的情況
return bin_search(arr[:mid], target) # 在列表的左半邊遞歸進行二分查找
class BinSearchTestCase(unittest.TestCase):
def test_bin_search(self):
test_data = [9, 5, 2, 7] # 測試數據
test_data.sort() # 先排序
self.assertEqual(bin_search(test_data, 2), True)
self.assertEqual(bin_search(test_data, 9), True)
self.assertEqual(bin_search(test_data, 1), False)
self.assertEqual(bin_search(test_data, 999), False)
if __name__ == '__main__':
unittest.main()
總結
以上是生活随笔為你收集整理的傲梦python笔试题_python笔试题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: supervisor 重启_superv
- 下一篇: python做数据和大数据区别_不懂Py