数据结构与算法一

二分查找

def binary_search(arr,item):
    low=0
    high=len(arr)-1    
    while low<=high:
         mid=(low+high)//2
         guess=arr[mid]
         if(guess==item):
            return  mid
         elif(guess<item):
            low=mid+1
         else:
             high=mid-1
    return "没有找到该元素'
            
  • 二分查找要求元素有序
  • 通过大O表示其运行时间O(log n)

常见的大O运行时间

  • O(log n) 对数时间 代表算法:二分查找
  • O(n) 线性时间 代表算法:简答查找
  • O(n*log n) 代表算法:快速排序
  • O(n*n) 代表算法:选择排序
  • O(n!) 代表算法:旅行商问题

递归获取列表最大元素

def maxElem(list):
    if len(list)==1:
        return list[0]
   
    else:
        if list[0]>maxElem(list[1:]):
            return list[0]
        else:
            return maxElem(list[1:])

快速排序实现

def FastSort(list_in):
    # 基线条件:列表(数组)的元素小于2时无需排序
    if(len(list_in)<2):
        return list_in
    
    else:
    #递归条件:列表(数组)元素大于2时,找到一个参考值(一般为数组第一个元素)
    #将原有列表分为两个子列表,第一个列表元素都小于等于参考值,第二个列表元素都大于参考值
        base=list_in[0]
        smaller=[]
        bigger=[]
        for i in list_in[1:]:
            if(i<=base):
                smaller.append(i)
                
            else:
                bigger.append(i)
        return quicksort(smaller)+[base]+quicksort(bigger)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值