Maison > développement back-end > Tutoriel Python > Algorithmes, l'entrepôt d'algorithmes Python le plus complet

Algorithmes, l'entrepôt d'algorithmes Python le plus complet

WBOY
Libérer: 2023-06-03 08:46:03
avant
1514 Les gens l'ont consulté

​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.

Algorithmes, lentrepôt dalgorithmes Python le plus complet

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.

Algorithmes, lentrepôt dalgorithmes Python le plus complet

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
Copier après la connexion

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)
Copier après la connexion

Citez quelques cas d'algorithmes courants.

1. Algorithme de tri - tri par seau

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
Copier après la connexion

2. Apprentissage automatique - méthode d'interpolation du voisin le plus proche

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]
Copier après la connexion

3 Décodage et codage de chaînes

# 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
Copier après la connexion

4. sont très complets adaptés à la pratique, les amis peuvent l'essayer.

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!

Étiquettes associées:
source:51cto.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal