今天介绍一个有趣的第三方模块——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模块相关推荐

  1. 开源的python机器学习模块

    为了理解和应用机器学 习技术,你需要学习 Python 或者 R.这两者都是与 C.Java.PHP 相类似的编程语言.但是,因为 Python 与 R 都比较年轻, 而且更加"远离&quo ...

  2. Python Pandas模块教程

    Python Pandas模块 (Python Pandas Module) Pandas is an open source library in Python. It provides ready ...

  3. Python Re 模块超全解读!详细

    内行必看!Python Re 模块超全解读! 2019.08.08 18:59:45字数 953阅读 121 re模块下的函数 compile(pattern):创建模式对象 > import ...

  4. python argparse模块_Python argparse模块应用实例解析

    这篇文章主要介绍了Python argparse模块应用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 简介 argparse是python ...

  5. 关于使用python logging模块的几点总结

    关于使用python logging模块的几点总结 使用python的标准日志模块logging可以非常方便地记录日志.Python日志系统非常丰富.添加结构化或非结构化日志输出到python代码,写 ...

  6. python高级-模块(14)

    一.python中的模块 有过C语言编程经验的朋友都知道在C语言中如果要引用sqrt函数,必须用语句#include <math.h>引入math.h这个头文件,否则是无法正常进行调用的. ...

  7. 转载: Python os 模块的功能以及子函数介绍

    原文链接: python之os模块 - 程序生(Codey) - 博客园 https://www.cnblogs.com/cxscode/p/8085326.html 一.Python OS模块介绍 ...

  8. 简单介绍python process模块

    在python中大部分情况需要使用多进程,python提供了multiprocessing模块.multiprocessing模块的功能众多:支持子进程.通信和共享数据.执行不同形式的同步,提供了Pr ...

  9. python io模块_python中的StringIO模块

    原博文 2015-10-23 15:21 − # python中的StringIO模块 标签:python StringIO --- > 此模块主要用于在内存缓冲区中读写数据.模块是用类编写的, ...

  10. python正则表达式需要模块_使用Python正则表达式模块,让操作更加简单

    处理文本数据的一个主要任务就是创建许多以文本为基础的特性. 人们可能想要在文本中找出特定格式的内容,比如找出存在于文本中的电子邮件,或者大型文本中的电话号码. 虽然想要实现上述功能听起来很繁琐,但是如 ...

最新文章

  1. JavaScript封装一个注册函数解决兼容问题
  2. mysql表分区占用存储_MySQL 分区分表应用场景分析和分区中可能遇到的坑点
  3. 从粒子到宇宙的旅行指南
  4. ClickHouse | MergeTree引擎之数据分区
  5. java 时间戳验证_Java中带有时间戳的数字签名
  6. c语言不通包里的函数,C语言中实现不同函数间jump的方法 -电脑资料
  7. python装饰器性能_python装饰器的特性原理详解
  8. Bootstrap 如何使用字体图标
  9. MFC中使用TAB Control控件
  10. 2020 年,最适合 AI 的 5 种编程语言
  11. C#实现不安装Oracle客户端访问远程服务器数据
  12. live2d模型二次开发
  13. 服务器租用多少钱一年呢?
  14. sign in with Apple,使用Apple授权登录
  15. 剑指offe 42 连续子树组中的最大和
  16. 骐俊CAT1模组 - MQTT接入腾讯云平台篇
  17. 基于Spring Security和 JWT的权限系统设计
  18. 2022字节跳动【数据仓库工程师】日常实习面经-----一面
  19. 如何修改C盘下的用户名
  20. 无论创业还是做人,你都需要知道什么是MVPPMF

热门文章

  1. 小米开源文件管理器MiCodeFileExplorer-源码研究(9)-入口分析
  2. Axure RP9 一启动就崩溃弹出错误报告
  3. 软硬磁盘和磁盘驱动器是微型计算机的外存储设备,可实现对信息的,21. 软硬磁盘和磁盘驱动器是微型计算机的外存储设备,它是实现对信息的...
  4. HTML5正确嵌入flash,网页上嵌入Flash播放器(1)
  5. 电子信息工程考研专业方向解读
  6. cr3格式是什么意思_佳能rp的cr3如何打开?修图为什么要用raw格式?转码又是什么?...
  7. 【java工具类】将明文密码转成MD5密码
  8. 制作u盘linux课程报告,定制U盘Linux系统总结报告-Linux文档类资源
  9. Android常用的 adb shell命令
  10. httpclient4.X 设置代理请求(包含账号密码)