Maison > Article > développement back-end > Algorithmes, l'entrepôt d'algorithmes Python le plus complet
La meilleure façon d'apprendre la programmation et Python est de pratiquer Même si vous êtes novice, tant que vous continuez à taper du code et à sortir, vous obtiendrez certainement des effets magiques.
Il existe de nombreux projets de formation Python, notamment sur Github. Il est recommandé aux utilisateurs novices et expérimentés de les consulter.
Ici, je vous recommande un projet pratique sur Gitthub, les algorithmes d'entrepôt d'algorithmes.
https://github.com/keon/algorithms
Il contient des implémentations Python de nombreux algorithmes de base, tels que le tri, le calcul graphique, le retour en arrière, la file d'attente, le calcul de flux, le tas, la recherche, la compression, etc.
Cet entrepôt prend en charge l'installation de bibliothèques tierces et les appelle en python, ce qui est très pratique.
Utilisez d'abord pip pour installer :
pip3 install algorithms
Importez ensuite les modules pertinents à appeler, tels que l'algorithme de tri par fusion merge_sort dans le module de tri.
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)
Citez quelques cas d'algorithmes courants.
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
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]
# 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
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!