算法_列表查找以及二分查找

 

1、列表查找

一、列表查找:從列表中查找指定元素html

  • 輸入:列表、待查找元素
  • 輸出:元素下標或未查找到元素

二、順序查找:從列表第一個元素開始,順序進行搜索,直到找到爲止。返回找到的那個索引
三、二分查找:從有序列表的候選區data[0:n]開始,經過對待查找的值與候選區中間值的比較,能夠使候選區減小一半。算法

   二分查找:時間複雜度是O(logn)
      二分查找的前提:列表是有序的

切片的複雜讀是O(n) #由於切的時候是賦值的spa

二分查找示例code

def serach(li,val):
    low = 0  #開始索引
    high = len(li) - 1  #結束索引
    while low<=high:
        mid = (low+high)//2
        if li[mid] > val:   #若是中間值比傳進來的值大就從中間值的左邊找
            high = mid-1
        elif li[mid]<val:
            low = mid +1
        else:
            return mid
    else:
        return -1

li = list(range(0,101,2))
print(serach(li,98))



# ==================遞歸版的二分查找===========
def bin_serach_rec(li,val,low,high):
    if low<=high:
        mid = (low+high)//2
        if li[mid] >val:
            return bin_serach_rec(li,val,low,mid-1,)
        elif li[mid]<val:
            return bin_serach_rec(li,val,mid+1,high)
        else:
            return mid
    else:
        return

li = list(range(0,101,2))
print(serach(li,98))

2、列表排序

一、列表排序htm

將無序列表變爲有序列表blog

二、應用場景排序

  • 各類榜單
  • 各類表格
  • 給二分查找用
  • 給其餘算法用

輸入:無序列表遞歸

輸出:有序列表索引

 

 

 

參考or轉發

http://www.cnblogs.com/haiyan123/p/8395402.htmlget

相關文章
相關標籤/搜索