网络编程
位置:首页>> 网络编程>> Python编程>> python入门之算法学习

python入门之算法学习

作者:321yu  发布时间:2021-05-16 19:38:19 

标签:python,算法,入门

前言

参考学习书籍:《算法图解》[美]Aditya Bhargava,袁国忠(译)北京人民邮电出版社,2017

二分查找 binary_search

实现二分查找的python代码如下:


def binary_search(list, item):
   low = 0 #最低位索引位置为0
   high = len(list)- 1 #最高位索引位置为总长度-1
   while low <= high:
       mid = (low + high)//2 #检查中间的元素,书上是一条斜杠,我试过加两条斜杠才行
       guess = list[mid]#python自动圆整
       if guess == item:  #找到了元素
           return mid
       if guess > item:  #猜的数字大了,就修改high
           high = mid - 1
       else:            #猜的数字小了,就修改low
           low = mid + 1
   return None   #没有指定的元素

测试代码:


>>> if __name__ == "__main__":#我试过加上好用
my_list=[1,3,5,7,9]
print (binary_search(my_list,3))#把binary_search也加上括号

1#表示3的索引位置为1
>>> if __name__ == "__main__":
my_list=[1,3,5,7,9]
print (binary_search(my_list,0))

None#表示0不在列表中

选择排序 selectionSort()

实现选择排序的python代码如下:


def findSmallest(arr):
   smallest = arr[0]
   smallest_index =0
   for i in range(1,len(arr)):
       if arr[i] < smallest:
           smallest = arr[i]
           smallest_index= i
   return smallest_index

def selectionSort(arr):
   newArr = []
   for i in range(len(arr)):
       smallest = findSmallest(arr)
       newArr.append(arr.pop(smallest))  
   return newArr

测试代码:


#样式1,把selcetionSort()作为新的值给arr,打印arr
>>> number=[5,3,6,2,10]
>>> arr=selectionSort(number)
>>> arr
[2, 3, 5, 6, 10]
#样式2,加上if __name__ == '__main__':(我也不知道啥作用)
>>> if __name__ == '__main__':
number=[5,3,6,2,10]
print(selectionSort(number))

[2, 3, 5, 6, 10]
#样式3,直接输出,最简洁
>>> number=[5,3,6,2,10]
>>> print(selectionSort(number))
[2, 3, 5, 6, 10]

来源:https://blog.csdn.net/weixin_53592372/article/details/115863806

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com