Rumah > pembangunan bahagian belakang > Tutorial Python > Algoritma, gudang algoritma Python paling komprehensif

Algoritma, gudang algoritma Python paling komprehensif

WBOY
Lepaskan: 2023-06-03 08:46:03
ke hadapan
1537 orang telah melayarinya

​Cara terbaik untuk mempelajari pengaturcaraan dan Python adalah dengan berlatih Walaupun anda seorang pemula, selagi anda terus menaip kod dan output, ia pasti akan berkesan.

Terdapat banyak projek latihan Python, terutamanya pada Github Adalah disyorkan bahawa pengguna baru dan berpengalaman menyemaknya.

Algoritma, gudang algoritma Python paling komprehensif

Berikut ialah projek yang disyorkan untuk semua orang berlatih di Gitthub, algoritma gudang-algoritma.

https://github.com/keon/algorithms

Ini mengandungi pelaksanaan Python bagi banyak algoritma teras, seperti pengisihan, pengkomputeran graf, pengesanan belakang, baris gilir, pengkomputeran aliran, timbunan, carian, Mampatan dan sebagainya.

Algoritma, gudang algoritma Python paling komprehensif

Gudang ini menyokong pemasangan perpustakaan pihak ketiga dan memanggilnya dalam python, yang sangat mudah.

Mula-mula gunakan pip untuk memasang:

pip3 install algorithms
Salin selepas log masuk

Kemudian import modul yang berkaitan untuk dipanggil, seperti algoritma pengisihan gabungan merge_sort dalam modul isihan.

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)
Salin selepas log masuk

Petik beberapa kes algoritma biasa.

1. Algoritma pengisihan-Isih baldi

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
Salin selepas log masuk

2 Pembelajaran mesin-kaedah interpolasi jiran terdekat

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]
Salin selepas log masuk

3 . Histagonal distribution

# 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
Salin selepas log masuk

Secara peribadi, saya rasa algoritma di gudang ini sangat lengkap dan sesuai untuk dipraktikkan.

Atas ialah kandungan terperinci Algoritma, gudang algoritma Python paling komprehensif. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:51cto.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan