美文网首页
python查找算法问题总结

python查找算法问题总结

作者: 托贝多尔 | 来源:发表于2022-02-22 16:58 被阅读0次

1、单个元素查找(有序)

查找第一个值等于给定值的元素下标

def binary_search(sorted_list:list,aim:int):
    low=0
    high=len(sorted_list)-1
    while low<=high:
        mid=low+(high-low)//2 
        # mid=(low+high)//2
        if sorted_list[mid]>aim:
            high=mid-1
        elif sorted_list[mid]<aim:
            low=mid+1
        else:
            if mid==0 or sorted_list[mid-1]!=aim:
                return mid #变形可以查找最后一个小于给定值的元素下标mid-1
            high=mid-1
    return -1

查找最后一个值等于给定值的元素下标

def binary_search(sorted_list:list,aim:int):
    low=0
    hight=len(sorted_list)-1
    while low<=high:
        mid=low+(high-low)//2
        #mid =(high+low)//2
        if sorted_list[mid]>aim:
            high=mid-1
        elif sorted_list[mid]<aim:
            low=mid+1
        else:
            if mid==len(sorted_list)-1 or sorted_list[mid+1]!=aim:
                return mid # 变形可以查找第一个大于给定值的的元素下标mid+1
            else:
                low=mid+1
        return -1

查找第一个大于等于给定值的元素下标

def binary_search(sorted_list:list,aim:int):
    low=0
    high=len(sorted_list)-1
    while low<=high:
        mid=low+(high-low)//2
        # mid=(low+high)//2
        if sorted_list[mid]<aim:
            low=mid+1
        else:
            if mid==0 or sorted_list[mid-1]<aim: 
                return mid
            else:# 中间位置的值不是第一个大于等于给定值的值,向下找
                high=mid-1
    return -1   

查找最后一个小于等于给定值的元素下标

def binary_search(sorted_list:list,aim:int):
    low=0
    high=len(sorted_list)-1
    while low<=high:
        mid=low+(high-low)//2
        #mid=(high+low)//2
        if sorted_list[mid]>aim:
            high=mid-1
        else:
            if mid==len(sorted_list)-1 or sorted_list[mid+1]>aim:
                return mid
            else:# 中间位置的值不是最后一个小于等于给定值的值,向上找
                low= mid+1
    return -1

2、集合元素查找(有序)

查找所有值等于给定值的元素

sorted_list[查找第一个值等于给定值的元素下标:查找最后一个值等于给定值的元素下标+1]

查找所有值大于给定值的元素

sorted_list[查找最后一个值等于给定值的元素下标+1:]

查找所有值小于给定值的元素

sorted_list[:查找第一个值等于给定值的元素下标+1]

查找所有值大于等于给定值的元素

sorted_list[查找第一个大于等于给定值的元素下标:]
或
sorted_list[查找第一个值等于给定值的元素下标:]

查找所有小于等于给定值的元素

sorted_list[:查找最后一个小于等于给定值的元素下标+1]
或
sorted_list[:查找最后一个值等于给定值的元素下标+1]

相关文章

  • python查找算法问题总结

    1、单个元素查找(有序) 查找第一个值等于给定值的元素下标 查找最后一个值等于给定值的元素下标 查找第一个大于等于...

  • 基础查找算法分析

    在之前学习了一些排序算法,得出了基础排序算法的总结。之后学习了一些查找算法,今天来对于基础的一些查找算法进行总结。...

  • 程序员常见算法的那些事

    面试的时候经常会被问算法的事情,今天就这个问题查找了一些算法的总结! 算法一:快速排序算法 快速排序是由东尼·霍尔...

  • python 算法开发笔记

    前言 最近看完《算法图解》对python的算法有点了解,特记录下来 算法概括 二分查找的速度比简单查找快得多 算法...

  • 查找算法总结及其算法实现(Python/Java)

    -----正文开始----- 预备知识 查找算法分类 1)静态查找和动态查找; 注:静态或者动态都是针对查找表而言...

  • 算法之二分查找

    排序算法 二分查找 用于有序元素列表的查找性能: Python实现: C#实现

  • 查找算法-Python

    无序表查找 线性查找 O( n ) 适用于线性表的顺序存储结构和链式存储结构。 有序表查找 二分查找 Binary...

  • 算法(2)KMP算法

    1.0 问题描述 实现KMP算法查找字符串。 2.0 问题分析 “KMP算法”是对字符串查找“简单算法”的优化。 ...

  • 查找算法总结

    二查查找树: 一颗二叉查找树是一个二叉树,其中每个节点都含有一个Comparable的键(以及相关联的值),且每个...

  • 排序算法

    算法与数据结构基础 查找算法: 二分查找法: 简介:二分查找法又被称为折半查找法,用于预排序的查找问题 过程: 如...

网友评论

      本文标题:python查找算法问题总结

      本文链接:https://www.haomeiwen.com/subject/lvyglrtx.html