>백엔드 개발 >파이썬 튜토리얼 >알고리즘, 가장 포괄적인 Python 알고리즘 웨어하우스

알고리즘, 가장 포괄적인 Python 알고리즘 웨어하우스

WBOY
WBOY앞으로
2023-06-03 08:46:031541검색

프로그래밍과 Python을 배우는 가장 좋은 방법은 연습하는 것입니다. 초보자라도 계속해서 코드를 입력하고 출력하는 한 마법 같은 효과가 나타날 것입니다.

특히 Github에는 Python 교육 프로젝트가 많이 있습니다. 초보자와 숙련된 사용자 모두 확인해 보는 것이 좋습니다.

알고리즘, 가장 포괄적인 Python 알고리즘 웨어하우스

여기서 알고리즘 웨어하우스 알고리즘인 Gitthub의 실습 프로젝트를 추천합니다.

https://github.com/keon/algorithms

정렬, 그래프 컴퓨팅, 역추적, 대기열, 스트림 컴퓨팅, 힙, 검색, 압축 등과 같은 많은 핵심 알고리즘의 Python 구현이 포함되어 있습니다.

알고리즘, 가장 포괄적인 Python 알고리즘 웨어하우스

이 웨어하우스는 타사 라이브러리 설치를 지원하고 Python으로 호출하므로 매우 편리합니다.

먼저 pip를 사용하여 설치하세요:

pip3 install algorithms

그런 다음 sort 모듈의 merge_sort 병합 정렬 알고리즘과 같은 호출할 관련 모듈을 가져옵니다.

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)

몇 가지 일반적인 알고리즘 사례를 인용해 보세요.

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_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

2. 머신러닝 - 최근접 이웃 보간법

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]

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

4. 개인적으로 이 웨어하우스의 알고리즘은 연습에 매우 적합합니다. 친구들이 시도해 볼 수 있습니다.

위 내용은 알고리즘, 가장 포괄적인 Python 알고리즘 웨어하우스의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제