Algorithms, the most comprehensive Python algorithm warehouse

WBOY
Release: 2023-06-03 08:46:03
forward
1402 people have browsed it

The best way to learn programming and Python is to practice. Even if you are a novice, as long as you keep typing code and output, it will definitely be effective.

There are many Python training projects, especially on Github. It is recommended that both novices and experienced users check it out.

Algorithms, the most comprehensive Python algorithm warehouse

Here is a project recommended for everyone to practice on Gitthub, algorithm warehouse-algorithms.

https://github.com/keon/algorithms

It contains Python implementations of many core algorithms, such as sorting, graph computing, backtracking, queue, stream computing, heap, search, Compression and so on.

Algorithms, the most comprehensive Python algorithm warehouse

#This warehouse supports the installation of third-party libraries and calls them in python, which is very convenient.

First use pip to install:

pip3 install algorithms
Copy after login

Then import relevant modules to call, such as the merge_sort merge sorting algorithm in the sort module.

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

Cite a few common algorithm cases.

1. Sorting algorithm-Bucket sort

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_list def 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
Copy after login

2. Machine learning-nearest neighbor interpolation method

import math def 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]
Copy after login

3. String decoding encoding

# 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 res def 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
Copy after login

4 . Histagonal distribution

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
Copy after login

I personally feel that the algorithms in this warehouse are very complete and suitable for practice. Friends can try it.

The above is the detailed content of Algorithms, the most comprehensive Python algorithm warehouse. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:51cto.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!