热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在Python中平分算法函数

在Python中平分算法函数原文:https://www.

在 Python 中平分算法函数

原文:https://www . geeksforgeeks . org/平分-算法-python 中的函数/

平分算法的目的是在列表中找到一个需要插入元素的位置,以保持列表的排序。

Python 在其定义中使用模块“二等分提供了二等分算法,该模块允许在插入每个元素后保持列表的排序顺序。这一点非常重要,因为这样可以减少在插入每个元素后对列表进行一次又一次排序所需的开销时间。

重要等分功能

1。平分(list,num,beg,end) :-该函数返回排序的列表中的位置,在该位置可以放置参数中传递的数字,以便按照排序顺序维护结果列表。如果该元素已经存在于列表中,则返回必须插入该元素的最右侧位置这个函数有 4 个参数,需要处理的列表,需要插入的数字,需要考虑的列表起始位置,需要考虑的结束位置

2。平分 _ 左(list,num,beg,end) :-该函数返回排序的列表中的位置,在该位置可以放置参数中传递的数字,以便按照排序顺序维护结果列表。如果该元素已经存在于列表中,则返回必须插入该元素的最左侧位置这个函数有 4 个参数,需要处理的列表,需要插入的数字,需要考虑的列表起始位置,需要考虑的结束位置

3。平分 _ 右(list,num,beg,end) :-这个函数的工作原理类似于上面提到的“平分()”。

# Python code to demonstrate the working of
# bisect(), bisect_left() and bisect_right()
# importing "bisect" for bisection operations
import bisect
# initializing list
li = [1, 3, 4, 4, 4, 6, 7]
# using bisect() to find index to insert new element
# returns 5 ( right most possible index )
print ("The rightmost index to insert, so list remains sorted is  : ", end="")
print (bisect.bisect(li, 4))
# using bisect_left() to find index to insert new element
# returns 2 ( left most possible index )
print ("The leftmost index to insert, so list remains sorted is  : ", end="")
print (bisect.bisect_left(li, 4))
# using bisect_right() to find index to insert new element
# returns 4 ( right most possible index )
print ("The rightmost index to insert, so list remains sorted is  : ", end="")
print (bisect.bisect_right(li, 4, 0, 4))

输出:

The rightmost index to insert, so list remains sorted is : 5
The leftmost index to insert, so list remains sorted is : 2
The rightmost index to insert, so list remains sorted is : 4

时间复杂度:

O(log(n)) -> Bisect method works on the concept of binary search

4。insort(list,num,beg,end) :-该函数在适当的位置插入数字后返回排序列表,如果元素已经存在于列表中,则该元素被插入到最右边可能的位置。 这个函数有 4 个参数,需要处理的列表,需要插入的数字,需要考虑的列表起始位置,需要考虑的结束位置

5。insert _ left(list,num,beg,end) :-该函数在适当位置插入数字后返回排序列表,如果列表中已经存在该元素,则该元素被插入到最左侧可能的位置。 这个函数有 4 个参数,需要处理的列表,需要插入的数字,需要考虑的列表起始位置,需要考虑的结束位置

6。insort_right(list,num,beg,end) :-这个函数的工作方式类似于上面提到的“insort()”。

# Python code to demonstrate the working of
# insort(), insort_left() and insort_right()
# importing "bisect" for bisection operations
import bisect
# initializing list
li1 = [1, 3, 4, 4, 4, 6, 7]
# initializing list
li2 = [1, 3, 4, 4, 4, 6, 7]
# initializing list
li3 = [1, 3, 4, 4, 4, 6, 7]
# using insort() to insert 5 at appropriate position
# inserts at 6th position
bisect.insort(li1, 5)
print ("The list after inserting new element using insort() is : ")
for i in range(0, 7):
    print(li1[i], end=" ")
# using insort_left() to insert 5 at appropriate position
# inserts at 6th position
bisect.insort_left(li2, 5)
print("\r")
print ("The list after inserting new element using insort_left() is : ")
for i in range(0, 7):
    print(li2[i], end=" ")
print("\r")
# using insort_right() to insert 5 at appropriate position
# inserts at 5th position
bisect.insort_right(li3, 5, 0, 4)
print ("The list after inserting new element using insort_right() is : ")
for i in range(0, 7):
    print(li3[i], end=" ")

输出:

The list after inserting new element using insort() is :
1 3 4 4 4 5 6
The list after inserting new element using insort_left() is :
1 3 4 4 4 5 6
The list after inserting new element using insort_right() is :
1 3 4 4 5 4 6

时间复杂度:

O(n) -> Inserting an element in sorted array requires traversal

本文由曼吉特·辛格供稿。如果你喜欢 GeeksforGeeks 并想投稿,你也可以使用contribute.geeksforgeeks.org写一篇文章或者把你的文章邮寄到 contribute@geeksforgeeks.org。看到你的文章出现在极客博客主页上,帮助其他极客。

如果你发现任何不正确的地方,或者你想分享更多关于上面讨论的话题的信息,请写评论。


推荐阅读
  • 深入解析Python中的循环双向链表数据结构
    本文详细探讨了Python中循环双向链表的数据结构,包括其定义、特点及应用场景。文章首先介绍了循环双向链表的基本概念,随后深入分析了其核心操作,如节点的插入、删除和遍历等。最后,通过具体的Python代码示例,展示了如何高效地实现这些操作,帮助读者全面理解并掌握这一重要数据结构。 ... [详细]
  • voc生成xml 代码
    目录 lxmlwindows安装 读取示例 可视化 生成示例 上面是代码,下面有调用示例 api调用代码,其实只有几行:这个生成代码也很简 ... [详细]
  • 利用 Python 实现 Facebook 账号登录功能 ... [详细]
  • 如何判断一个度序列能否构成简单图——哈维尔-哈基米算法的应用与解析 ... [详细]
  • 本文深入探讨了 Vue.js 中异步组件的应用与优化策略。首先,文章介绍了异步组件的基本概念及其在现代前端开发中的重要性。为了确保最佳实践,建议使用 Webpack 作为模块打包工具,因为 Browserify 默认不支持异步组件的加载。接着,详细解释了异步组件的使用方法,并提供了官方文档的相关链接以供参考。此外,文章还讨论了多种优化技巧,包括代码分割、懒加载和性能调优,以提升应用的整体性能和用户体验。 ... [详细]
  • Python – 遍历日期序列的高效方法与技巧 ... [详细]
  • 深入解析:使用C++实现Python字节数组(struct)的高效处理方法 ... [详细]
  • 在处理大规模并发请求时,传统的多线程或多进程模型往往无法有效解决性能瓶颈问题。尽管它们在处理小规模任务时能提升效率,但在高并发场景下,系统资源的过度消耗和上下文切换的开销会显著降低整体性能。相比之下,Python 的 `asyncio` 模块通过协程提供了一种轻量级且高效的并发解决方案。本文将深入解析 `asyncio` 模块的原理及其在实际应用中的优化技巧,帮助开发者更好地利用协程技术提升程序性能。 ... [详细]
  • 深入解析Java中HashCode的功能与应用
    本文深入探讨了Java中HashCode的功能与应用。在Java中,HashCode主要用于提高哈希表(如HashMap、HashSet)的性能,通过快速定位对象存储位置,减少碰撞概率。文章详细解析了HashCode的生成机制及其在集合框架中的作用,帮助开发者更好地理解和优化代码。此外,还介绍了如何自定义HashCode方法以满足特定需求,并讨论了常见的实现误区和最佳实践。 ... [详细]
  • Jedis接口分类详解与应用指南
    本文详细解析了Jedis接口的分类及其应用指南,重点介绍了字符串数据类型(String)的接口功能。作为Redis中最基本的数据存储形式,字符串类型支持多种操作,如设置、获取和更新键值对等,适用于广泛的应用场景。 ... [详细]
  • Android目录遍历工具 | AppCrawler自动化测试进阶(第二部分):个性化配置详解
    终于迎来了“足不出户也能为社会贡献力量”的时刻,但有追求的测试工程师绝不会让自己的生活变得乏味。与其在家消磨时光,不如利用这段时间深入研究和提升自己的技术能力,特别是对AppCrawler自动化测试工具的个性化配置进行详细探索。这不仅能够提高测试效率,还能为项目带来更多的价值。 ... [详细]
  • 深入解析十大经典排序算法:动画演示、原理分析与代码实现
    本文深入探讨了十种经典的排序算法,不仅通过动画直观展示了每种算法的运行过程,还详细解析了其背后的原理与机制,并提供了相应的代码实现,帮助读者全面理解和掌握这些算法的核心要点。 ... [详细]
  • 在Python 3环境中,当无法连接互联网时,可以通过下载离线模块包来实现模块的安装。具体步骤包括:首先从PyPI网站下载所需的模块包,然后将其传输到目标环境,并使用`pip install`命令进行本地安装。此方法不仅适用于单个模块,还支持依赖项的批量安装,确保开发环境的完整性和一致性。 ... [详细]
  • 利用GDAL库在Python中高效读取与处理栅格数据的详细指南 ... [详细]
  • 在第1112课的作业解析中,我们回顾了第11章和第12章的核心知识点。第11章重点介绍了列表操作的相关函数,如 `remove()`、`del` 和 `pop()`,以及切片操作。例如,对于列表 `member = [1, 2, 3, 4, 5]`,可以通过 `member.remove(1)` 来移除列表中的元素1。此外,还详细解析了这些函数在实际编程中的应用和注意事项,帮助初学者更好地理解和掌握Python编程的基础知识。 ... [详细]
author-avatar
男人--沉默底线
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有