python推荐算法模块_Python-算法模块,pythonalgorithms

今天介绍一个有趣的第三方模块——algorithms,它提供用Python实现的一些算法和数据结构及其操作,不是简单的基本操作哦。比如各种排序算法。主要目的是用来

学习

哈,不是生产和工作。

模块安装方法:

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 Sort

Best 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

字符串的相关操作,包括转码、是否回文、倒置等

从上述方法可以看到,很多方法其实就是我们平时遇到的算法题,并不是最基本的操作。再强调一下,该模块主要用途应该是学习!而不是直接调用,对于某方法可以上官网查阅源码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值