python——algorithms模块
今天介绍一个有趣的第三方模块——algorithms,它提供用Python实现的一些算法和数据结构及其操作,不是简单的基本操作哦。比如各种排序算法。主要目的是用来学习哈,不是生产和工作。
若想知道模块中方法的源码可以在官网查阅,上面有详细的介绍,包括算法性能等:
https://algorithms.readthedocs.io/en/latest/index.html
模块安装方法:
pip install algorithms
或 pip3 install algorithms #python3.x
该模块包括如下子模块,可以看到涵盖了如下各种数据结构和相关算法:
arrays
backtrack
bit
graph
heap
linkedlist
maths
queues
search
sort
stack
strings
注意在使用某子模块中的方法时,需要直接的引入该子模块,不能仅导入algorithms模块或from algorithms import *
,比如使用maths模块时,需要如下操作:
from algorithms import maths
这里以sort子模块具体举例:
sort
sort子模块的各种方法,大家看到名字也差不多知道是什么算法了吧,但是因为方法是返回输出后的结果,所以不能直接看出不同排序算法的区别,可以上官网查阅源码或者通过计时等方法测试比较一下哦。
bogo_sort #猴子排序(恶搞的^_^)
bubble_sort #冒泡排序
bucket_sort #桶排序
cocktail_shaker_sort #鸡尾酒排序、双向冒泡排序
comb_sort #梳排序
counting_sort #计数排序
gnome_sort #地精排序,也叫stupid sort
heap_sort #堆排序
insertion_sort #插入排序
merge_sort #归并排序
quick_sort #快速排序
radix_sort #基数排序
selection_sort #选择排序
shell_sort #希尔排序
top_sort #拓扑排序
wiggle_sort #摆动排序
举例:
from algorithms import sort
algorithms.sort.bubble_sort([1,5,3,7,3,2])
algorithms.sort.shell_sort([1,5,3,7,3,2])
#都会返回升序的相同结果[1, 2, 3, 3, 5, 7]
通过help可以查看复杂度:
help(algorithms.sort.bogo_sort)
'''
bogo_sort(arr)Bogo SortBest Case Complexity: O(n)Worst Case Complexity: O(∞)Average Case Complexity: O(n(n-1)!)
''''
其他模块
鉴于各自模块包括方法较多,这里不一一展开介绍,感兴趣的话就动手试试吧~
具体的各模块包括方法如下表:
子模块名 | 包含方法 | 解释 |
---|---|---|
arrays | delete_nth flatten garage josephus longest_non_repeat max_ones_index merge_intervals missing_ranges move_zeros plus_one rotate summarize_ranges three_sum two_sum | 关于数组的操作,比如删除第n个数、最长不重复子数组、两数和等 |
backtrack | add_operators anagram array_sum_combinations combination_sum factor_combinations find_words generate_abbreviations generate_parenthesis letter_combination palindrome_partitioning pattern_match permute permute_unique subsets subsets_unique | 回溯相关算法,比如查找回文子串等 |
bit | add_bitwise_operator bit_operation bytes_int_conversion count_flips_to_convert count_ones find_difference find_missing_number flip_bit_longest_sequence has_alternative_bit insert_bit power_of_two remove_bit reverse_bits single_number single_number2 single_number3 subsets swap_pair | 位操作算法 |
graph | Transitive_Closure_DFS checkDiGraphStronglyConnected clone_graph cycle_detection dijkstra find_all_cliques find_path graph markov_chain minimum_spanning_tree pathBetweenTwoVerticesInDiGraph satisfiability tarjan traversal | 图算法 |
linkedlist | add_two_numbers copy_random_pointer delete_node first_cyclic_node intersection is_cyclic is_palindrome is_sorted kth_to_last linkedlist merge_two_list partition remove_duplicates remove_range reverse rotate_list swap_in_pairs | 有序列表的操作、包括是否有序、是否回文、合并、删除重复值等 |
maths | base_conversion combination extended_gcd factorial gcd generate_strobogrammtic is_strobogrammatic next_bigger next_perfect_square nth_digit prime_check primes_sieve_of_eratosthenes pythagoras rabin_miller rsa sqrt_precision_factor summing_digits | 数学计算,包括最大公约数、下一个最大数等 |
queues | max_sliding_window moving_average priority_queue queue reconstruct_queue zigzagiterator | 队列操作,包括移动窗口、优先队列等 |
search | binary_search find_min_rotate first_occurance jump_search last_occurance linear_search search_insert search_range search_rotate two_sum | 包括查找的相关操作,比图:二分查找、首先出现、搜索范围、两数和等 |
sort | bogo_sort bubble_sort bucket_sort cocktail_shaker_sort comb_sort counting_sort gnome_sort heap_sort insertion_sort meeting_rooms merge_sort quick_sort radix_sort selection_sort shell_sort sort_colors top_sort wiggle_sort | 见上文 |
stack | is_consecutive is_sorted longest_abs_path ordered_stack remove_min simplify_path stack stutter switch_pairs valid_parenthesis | 栈的相关操作,包括单调栈等 |
strings | add_binary breaking_bad decode_string delete_reoccurring domain_extractor encode_decode fizzbuzz group_anagrams int_to_roman is_palindrome is_rotated license_number make_sentence merge_string_checker multiply_strings one_edit_distance rabin_karp reverse_string reverse_vowel reverse_words roman_to_int strip_url_params validate_coordinates word_squares | 字符串的相关操作,包括转码、是否回文、倒置等 |
从上述方法可以看到,很多方法其实就是我们平时遇到的算法题,并不是最基本的操作。再强调一下,该模块主要用途应该是学习!而不是直接调用,对于某方法可以上官网查阅源码。
python——algorithms模块相关推荐
- 开源的python机器学习模块
为了理解和应用机器学 习技术,你需要学习 Python 或者 R.这两者都是与 C.Java.PHP 相类似的编程语言.但是,因为 Python 与 R 都比较年轻, 而且更加"远离&quo ...
- Python Pandas模块教程
Python Pandas模块 (Python Pandas Module) Pandas is an open source library in Python. It provides ready ...
- Python Re 模块超全解读!详细
内行必看!Python Re 模块超全解读! 2019.08.08 18:59:45字数 953阅读 121 re模块下的函数 compile(pattern):创建模式对象 > import ...
- python argparse模块_Python argparse模块应用实例解析
这篇文章主要介绍了Python argparse模块应用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 简介 argparse是python ...
- 关于使用python logging模块的几点总结
关于使用python logging模块的几点总结 使用python的标准日志模块logging可以非常方便地记录日志.Python日志系统非常丰富.添加结构化或非结构化日志输出到python代码,写 ...
- python高级-模块(14)
一.python中的模块 有过C语言编程经验的朋友都知道在C语言中如果要引用sqrt函数,必须用语句#include <math.h>引入math.h这个头文件,否则是无法正常进行调用的. ...
- 转载: Python os 模块的功能以及子函数介绍
原文链接: python之os模块 - 程序生(Codey) - 博客园 https://www.cnblogs.com/cxscode/p/8085326.html 一.Python OS模块介绍 ...
- 简单介绍python process模块
在python中大部分情况需要使用多进程,python提供了multiprocessing模块.multiprocessing模块的功能众多:支持子进程.通信和共享数据.执行不同形式的同步,提供了Pr ...
- python io模块_python中的StringIO模块
原博文 2015-10-23 15:21 − # python中的StringIO模块 标签:python StringIO --- > 此模块主要用于在内存缓冲区中读写数据.模块是用类编写的, ...
- python正则表达式需要模块_使用Python正则表达式模块,让操作更加简单
处理文本数据的一个主要任务就是创建许多以文本为基础的特性. 人们可能想要在文本中找出特定格式的内容,比如找出存在于文本中的电子邮件,或者大型文本中的电话号码. 虽然想要实现上述功能听起来很繁琐,但是如 ...
最新文章
- JavaScript封装一个注册函数解决兼容问题
- mysql表分区占用存储_MySQL 分区分表应用场景分析和分区中可能遇到的坑点
- 从粒子到宇宙的旅行指南
- ClickHouse | MergeTree引擎之数据分区
- java 时间戳验证_Java中带有时间戳的数字签名
- c语言不通包里的函数,C语言中实现不同函数间jump的方法 -电脑资料
- python装饰器性能_python装饰器的特性原理详解
- Bootstrap 如何使用字体图标
- MFC中使用TAB Control控件
- 2020 年,最适合 AI 的 5 种编程语言
- C#实现不安装Oracle客户端访问远程服务器数据
- live2d模型二次开发
- 服务器租用多少钱一年呢?
- sign in with Apple,使用Apple授权登录
- 剑指offe 42 连续子树组中的最大和
- 骐俊CAT1模组 - MQTT接入腾讯云平台篇
- 基于Spring Security和 JWT的权限系统设计
- 2022字节跳动【数据仓库工程师】日常实习面经-----一面
- 如何修改C盘下的用户名
- 无论创业还是做人,你都需要知道什么是MVPPMF
热门文章
- 小米开源文件管理器MiCodeFileExplorer-源码研究(9)-入口分析
- Axure RP9 一启动就崩溃弹出错误报告
- 软硬磁盘和磁盘驱动器是微型计算机的外存储设备,可实现对信息的,21. 软硬磁盘和磁盘驱动器是微型计算机的外存储设备,它是实现对信息的...
- HTML5正确嵌入flash,网页上嵌入Flash播放器(1)
- 电子信息工程考研专业方向解读
- cr3格式是什么意思_佳能rp的cr3如何打开?修图为什么要用raw格式?转码又是什么?...
- 【java工具类】将明文密码转成MD5密码
- 制作u盘linux课程报告,定制U盘Linux系统总结报告-Linux文档类资源
- Android常用的 adb shell命令
- httpclient4.X 设置代理请求(包含账号密码)