龙空技术网

Algorithms,最全的Python算法仓库

朱卫军Python 2549

前言:

当前姐妹们对“后台算法类”大约比较看重,同学们都需要剖析一些“后台算法类”的相关知识。那么小编在网络上网罗了一些对于“后台算法类””的相关资讯,希望各位老铁们能喜欢,各位老铁们一起来学习一下吧!

学习编程、学习Python最好的方式就是练习,哪怕是新手,只要不断地敲代码输出,肯定会有神效。

Python的练手项目很多,特别是Github上,建议不管新手、老司机都去看看。

这里推荐给大家一个Gitthub上练习的项目,算法仓库-algorithms。

这里面集合众多核心算法的Python实现,比如排序、图计算、回溯、队列、流计算、堆、搜索、压缩等等。

该仓库支持第三方库安装,在python中进行调用,非常方便。

首先使用pip进行安装:

pip3 install algorithms

然后导入相关模块进行调用,比如sort模块里的merge_sort归并排序算法。

from algorithms.sort import merge_sortif __name__ == "__main__":    my_list = [1, 8, 3, 5, 6]    my_list = merge_sort(my_list)    print(my_list)

举几个常见的算法案例。

1、排序算法-桶排序

def bucket_sort(arr):    ''' Bucket Sort        Complexity: O(n^2)        The complexity is dominated by nextSort    '''    # The number of buckets and make buckets    num_buckets = len(arr)    buckets = [[] for bucket in range(num_buckets)]    # Assign values into bucket_sort    for value in arr:        index = value * num_buckets // (max(arr) + 1)        buckets[index].append(value)    # Sort    sorted_list = []    for i in range(num_buckets):        sorted_list.extend(next_sort(buckets[i]))    return sorted_listdef next_sort(arr):    # We will use insertion sort here.    for i in range(1, len(arr)):        j = i - 1        key = arr[i]        while arr[j] > key and j >= 0:            arr[j+1] = arr[j]            j = j - 1        arr[j + 1] = key    return arr
2、机器学习-最近邻插值法
import mathdef distance(x,y):    """[summary]    HELPER-FUNCTION    calculates the (eulidean) distance between vector x and y.    Arguments:        x {[tuple]} -- [vector]        y {[tuple]} -- [vector]    """    assert len(x) == len(y), "The vector must have same length"    result = ()    sum = 0    for i in range(len(x)):        result += (x[i] -y[i],)    for component in result:        sum += component**2    return math.sqrt(sum)def nearest_neighbor(x, tSet):    """[summary]    Implements the nearest neighbor algorithm    Arguments:        x {[tupel]} -- [vector]        tSet {[dict]} -- [training set]    Returns:        [type] -- [result of the AND-function]    """    assert isinstance(x, tuple) and isinstance(tSet, dict)    current_key = ()    min_d = float('inf')    for key in tSet:        d = distance(x, key)        if d < min_d:            min_d = d            current_key = key    return tSet[current_key]
3、字符串解码编码
# Implement the encode and decode methods.def encode(strs):    """Encodes a list of strings to a single string.    :type strs: List[str]    :rtype: str    """    res = ''    for string in strs.split():        res += str(len(string)) + ":" + string    return resdef decode(s):    """Decodes a single string to a list of strings.    :type s: str    :rtype: List[str]    """    strs = []    i = 0    while i < len(s):        index = s.find(":", i)        size = int(s[i:index])        strs.append(s[index+1: index+1+size])        i = index+1+size    return strs
4、直方分布
def get_histogram(input_list: list) -> dict:    """    Get histogram representation    :param input_list: list with different and unordered values    :return histogram: dict with histogram of input_list    """    # Create dict to store histogram    histogram = {}    # For each list value, add one to the respective histogram dict position    for i in input_list:        histogram[i] = histogram.get(i, 0) + 1    return histogram

个人感觉这个仓库里的算法很齐全,适合做练习,小伙伴们可以试试。

如果小伙伴们想要所有算法脚本,可以在后台私信回复【b】,领取打包文件。

标签: #后台算法类 #算法题可以用python做马 #经典算法题python #算法algorithms第4版 #算法algorithms第4版答案