zoukankan      html  css  js  c++  java
  • 查找----python

    class Solution:
        #顺序查找
        def seq_search(self,list,num):
            for i in(range(len(list))):
                if list[i] == num:
                    return i
            return -1
    
        #二分查找
        #每次能够排除掉一半的数据,查找的效率非常高,但是局限性比较大。
        #必须是有序序列才可以使用二分查找。
    
        #1、非递归算法
        def binary_search_normal(self,list,num):
            left=0
            right = len(list)-1
            mid = (left+right)//2
            while left <=right:
                if list[mid] > num:
                    right = mid-1
                    mid = (left+right)//2
                elif list[mid] < num:
                    left = mid+1
                    mid = (left + right)//2
                else:
                    return mid
            else:
                return -1
    
        #2、递归算法
        def binary_search_re(self,list,num,left,right):
            if left > right:    #递归结束条件
                return -1
            mid = (left+right)//2
            if list[mid] > num:
                right = mid - 1
            elif list[mid] < num:
                left = mid + 1
            else:
                return mid
            return solution.binary_search_re(list, num, left, right)
    
    
    
    
    
    if __name__ == '__main__':
        list = [3,5,11,17,21,23,28,30,32,50,64,78,81,95,101]
        num = 32
        solution = Solution()
        # result1 = solution.seq_search(list,num)
        # print(result1)
        list.sort()
        # result2 = solution.binary_search_normal(list,num)
        # print(result2)
        result3 = solution.binary_search_re(list,num,0,len(list)-1)
        print(result3)
  • 相关阅读:
    GUI基础学习
    常用类string的用法
    类。对象和包--补上周
    类.对象和包
    调用函数的注意事项
    函数的简单运用
    一维数组基础
    java中scanner类的用法
    数据库——DQL(语句查询)
    数据库——JDBC
  • 原文地址:https://www.cnblogs.com/turningli/p/12451896.html
Copyright © 2011-2022 走看看