当前位置 博文首页 > python入门之算法学习

    python入门之算法学习

    作者:321yu 时间:2021-06-27 17:44

    前言

    参考学习书籍:《算法图解》[美]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]
    
    js
    下一篇:没有了