常见算法

Python 2018-12-17 885

二分查找顾名思义就是,查一半,符合就接着查,不符合就丢弃。

def search(data, item):
    low = 0  # 最小的索引  
    hight = len(data) - 1  # data最大的索引  
    while low <= hight:  # 只要不是只有一个元素,就循环  
        mid = (low + hight) // 2  # 中间索引值  
        result = data[mid]  # 中间值  
        if result == item:  # 比较查找的值  
            return mid  # 返回索引值  
        elif result < item:  # 传入值大于中间值,去除不符合要求的部分  
            low = mid + 1
        else:
            hight = mid - 1
    return None  # 没有返回None


data = [1, 5, 6, 8, 7, 60]  # 列表必须是有序的  
print(search(data, 60))
快速排序

快速排序,有递归的思想。
快速排序,是取列表的一个数,来比较列表中其他数,比他大的,放一边,比他小的放一边,最后拼接时,自己放中间。
在排序时,左右两侧的数只是分成比他大的数与比他小的数,但内部依然是无序的,因此,递归调用自己就可以了。

def fast_sort(lis):  
  if len(lis) < 2:# 基线条件,基线条件比较好找,但递归条件不易找  
    return lis  
  else:# 递归条件  
    data = lis[0]  
    left = [i for i in lis[1:] if data > i]  
    right = [i for i in lis[1:] if data < i]  
    return fast_sort(left) + [data] + fast_sort(right)

lis = [2, 8, 7, 9, 1, 3, 5, 7]  
print(fast_sort(lis))  

 

标签:Python

文章评论

评论列表

已有0条评论