الگوریتم های سرگرم کننده و خارق العاده که هر توسعه دهنده ای باید بداند

Summarize this content to 400 words in Persian Lang
الگوریتمها طلسمهای جادویی دنیای نرمافزار هستند که مشکلات پیچیده را به وظایف قابل مدیریت تبدیل میکنند و باعث میشوند کد ما مانند یک افسون عمل کند. چه در حال مرتبسازی از طریق دادهها، جستجوی سوزن در انبار کاه، یا یافتن کوتاهترین مسیر در پیچ و خم، الگوریتمی برای کمک به شما وجود دارد. ما به الگوریتمهای سرگرمکننده و خارقالعادهای میپردازیم که هر توسعهدهندهای باید بداند و دوست داشته باشد.
1. الگوریتم های مرتب سازی
مرتب سازی حباب
مرتب سازی حباب کلاسیک “حباب” بازی است. حباب هایی را تصور کنید که در یک لیوان نوشابه به سطح می آیند و هر حباب نشان دهنده یک عنصر داده است. این یک الگوریتم ساده است که عناصر مجاور را تا مرتب شدن کل لیست مقایسه و تعویض می کند.
def bubble_sort(arr):
n = len(arr)
for i in range(n):
for j in range(0, n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
return arr
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
مرتب سازی سریع
Quick Sort ابرقهرمان تقسیم و حکومت کن در مرتب سازی است. یک محور را انتخاب میکند و آرایه را به قسمتهای کوچکتر تقسیم میکند، و قبل از ادغام مجدد آنها با یکدیگر، آنها را به طور مستقل مرتب میکند. مانند این است که قفسه کتاب خود را با جدا کردن کتاب ها به ژانرها و سپس مرتب کردن هر ژانر به صورت جداگانه سازماندهی کنید.
def quick_sort(arr):
if len(arr) 1:
return arr
else:
pivot = arr[len(arr) // 2]
left = [x for x in arr if x pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quick_sort(left) + middle + quick_sort(right)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
2. الگوریتم های جستجو
جستجوی خطی
جستجوی خطی مانند ورق زدن صفحات کتاب برای یافتن یک کلمه خاص است. این ساده است و هر عنصر را تا زمانی که هدف را پیدا کند بررسی می کند. ایده آل برای مجموعه داده های کوچک یا زمانی که به یک راه حل ساده نیاز دارید.
def linear_search(arr, target):
for i in range(len(arr)):
if arr[i] == target:
return i
return -1
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
جستجوی باینری
جستجوی دودویی سلاح مخفی کتابدار است. با یک لیست مرتب شده، محدوده جستجو را به نصف تقسیم می کند و احتمالات را تا زمانی که هدف را پیدا کند محدود می کند. این مانند انجام یک بازی “سرد و گرم” با دقت است.
def binary_search(arr, target):
low, high = 0, len(arr) – 1
while low high:
mid = (low + high) // 2
if arr[mid] == target:
return mid
elif arr[mid] target:
low = mid + 1
else:
high = mid – 1
return -1
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
3. الگوریتم های نمودار
الگوریتم دایکسترا
الگوریتم Dijkstra بهترین ناوبری GPS است. کوتاه ترین مسیر را در یک نمودار پیدا می کند و آن را برای مسیریابی و بهینه سازی شبکه ایده آل می کند. به این فکر کنید که سریعترین مسیر از خانه تا بستنی فروشی مورد علاقه خود را ترسیم کنید.
import heapq
def dijkstra(graph, start):
queue = []
heapq.heappush(queue, (0, start))
distances = {node: float(‘infinity’) for node in graph}
distances[start] = 0
while queue:
current_distance, current_node = heapq.heappop(queue)
if current_distance > distances[current_node]:
continue
for neighbor, weight in graph[current_node].items():
distance = current_distance + weight
if distance distances[neighbor]:
distances[neighbor] = distance
heapq.heappush(queue, (distance, neighbor))
return distances
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
4. الگوریتم های برنامه نویسی پویا
دنباله فیبوناچی
دنباله فیبوناچی معمای کدگذاری طبیعت است. با استفاده از برنامهنویسی پویا، میتوانیم دنبالهای را به طور کارآمد تولید کنیم، مانند پر کردن قطعات گمشده یک موزاییک زیبا.
def fibonacci(n):
if n 1:
return n
fib = [0, 1]
for i in range(2, n+1):
fib.append(fib[i-1] + fib[i-2])
return fib[n]
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
5. الگوریتم های یادگیری ماشین
K-نزدیکترین همسایگان (KNN)
KNN مانند پیدا کردن دسته خود در یک کافه تریا دبیرستان است. این نقاط داده را بر اساس “همسایگی” که به آن تعلق دارند طبقه بندی می کند و آن را به ابزاری قدرتمند برای کارهای طبقه بندی و رگرسیون تبدیل می کند.
import numpy as np
from collections import Counter
def knn_predict(data, query, k):
distances = []
for group in data:
for features in data[group]:
euclidean_distance = np.linalg.norm(np.array(features) – np.array(query))
distances.append((euclidean_distance, group))
votes = [i[1] for i in sorted(distances)[:k]] vote_result = Counter(votes).most_common(1)[0][0] return vote_result
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
نتیجه
این الگوریتمهای سرگرمکننده و خارقالعاده اجزای مخفی برای ایجاد کارآمد، قابل اعتماد و قدرتمند کردن نرمافزار شما هستند. از مرتبسازی و جستجو گرفته تا ناوبری نمودار و برنامهنویسی پویا، تسلط بر این الگوریتمها مهارتهای حل مسئله شما را افزایش میدهد و فرصتهای جدیدی را در سفر کدنویسی شما باز میکند.
آموزش ها و منابع هیجان انگیز بیشتری را در DevToys.io، زمین بازی خود برای توسعه نرم افزار همه چیز، کاوش کنید. کد نویسی مبارک!
❤️ اگر از این مقاله لذت بردید، برای اطلاعات بیشتر به انجمن هکرهای ما مراجعه کنید! در خبرنامه ما ثبت نام کنید تا جلوتر باشید! DevToys.io 👽
الگوریتمها طلسمهای جادویی دنیای نرمافزار هستند که مشکلات پیچیده را به وظایف قابل مدیریت تبدیل میکنند و باعث میشوند کد ما مانند یک افسون عمل کند. چه در حال مرتبسازی از طریق دادهها، جستجوی سوزن در انبار کاه، یا یافتن کوتاهترین مسیر در پیچ و خم، الگوریتمی برای کمک به شما وجود دارد. ما به الگوریتمهای سرگرمکننده و خارقالعادهای میپردازیم که هر توسعهدهندهای باید بداند و دوست داشته باشد.
1. الگوریتم های مرتب سازی
مرتب سازی حباب
مرتب سازی حباب کلاسیک “حباب” بازی است. حباب هایی را تصور کنید که در یک لیوان نوشابه به سطح می آیند و هر حباب نشان دهنده یک عنصر داده است. این یک الگوریتم ساده است که عناصر مجاور را تا مرتب شدن کل لیست مقایسه و تعویض می کند.
def bubble_sort(arr):
n = len(arr)
for i in range(n):
for j in range(0, n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
return arr
مرتب سازی سریع
Quick Sort ابرقهرمان تقسیم و حکومت کن در مرتب سازی است. یک محور را انتخاب میکند و آرایه را به قسمتهای کوچکتر تقسیم میکند، و قبل از ادغام مجدد آنها با یکدیگر، آنها را به طور مستقل مرتب میکند. مانند این است که قفسه کتاب خود را با جدا کردن کتاب ها به ژانرها و سپس مرتب کردن هر ژانر به صورت جداگانه سازماندهی کنید.
def quick_sort(arr):
if len(arr) 1:
return arr
else:
pivot = arr[len(arr) // 2]
left = [x for x in arr if x pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quick_sort(left) + middle + quick_sort(right)
2. الگوریتم های جستجو
جستجوی خطی
جستجوی خطی مانند ورق زدن صفحات کتاب برای یافتن یک کلمه خاص است. این ساده است و هر عنصر را تا زمانی که هدف را پیدا کند بررسی می کند. ایده آل برای مجموعه داده های کوچک یا زمانی که به یک راه حل ساده نیاز دارید.
def linear_search(arr, target):
for i in range(len(arr)):
if arr[i] == target:
return i
return -1
جستجوی باینری
جستجوی دودویی سلاح مخفی کتابدار است. با یک لیست مرتب شده، محدوده جستجو را به نصف تقسیم می کند و احتمالات را تا زمانی که هدف را پیدا کند محدود می کند. این مانند انجام یک بازی “سرد و گرم” با دقت است.
def binary_search(arr, target):
low, high = 0, len(arr) - 1
while low high:
mid = (low + high) // 2
if arr[mid] == target:
return mid
elif arr[mid] target:
low = mid + 1
else:
high = mid - 1
return -1
3. الگوریتم های نمودار
الگوریتم دایکسترا
الگوریتم Dijkstra بهترین ناوبری GPS است. کوتاه ترین مسیر را در یک نمودار پیدا می کند و آن را برای مسیریابی و بهینه سازی شبکه ایده آل می کند. به این فکر کنید که سریعترین مسیر از خانه تا بستنی فروشی مورد علاقه خود را ترسیم کنید.
import heapq
def dijkstra(graph, start):
queue = []
heapq.heappush(queue, (0, start))
distances = {node: float('infinity') for node in graph}
distances[start] = 0
while queue:
current_distance, current_node = heapq.heappop(queue)
if current_distance > distances[current_node]:
continue
for neighbor, weight in graph[current_node].items():
distance = current_distance + weight
if distance distances[neighbor]:
distances[neighbor] = distance
heapq.heappush(queue, (distance, neighbor))
return distances
4. الگوریتم های برنامه نویسی پویا
دنباله فیبوناچی
دنباله فیبوناچی معمای کدگذاری طبیعت است. با استفاده از برنامهنویسی پویا، میتوانیم دنبالهای را به طور کارآمد تولید کنیم، مانند پر کردن قطعات گمشده یک موزاییک زیبا.
def fibonacci(n):
if n 1:
return n
fib = [0, 1]
for i in range(2, n+1):
fib.append(fib[i-1] + fib[i-2])
return fib[n]
5. الگوریتم های یادگیری ماشین
K-نزدیکترین همسایگان (KNN)
KNN مانند پیدا کردن دسته خود در یک کافه تریا دبیرستان است. این نقاط داده را بر اساس “همسایگی” که به آن تعلق دارند طبقه بندی می کند و آن را به ابزاری قدرتمند برای کارهای طبقه بندی و رگرسیون تبدیل می کند.
import numpy as np
from collections import Counter
def knn_predict(data, query, k):
distances = []
for group in data:
for features in data[group]:
euclidean_distance = np.linalg.norm(np.array(features) - np.array(query))
distances.append((euclidean_distance, group))
votes = [i[1] for i in sorted(distances)[:k]]
vote_result = Counter(votes).most_common(1)[0][0]
return vote_result
نتیجه
این الگوریتمهای سرگرمکننده و خارقالعاده اجزای مخفی برای ایجاد کارآمد، قابل اعتماد و قدرتمند کردن نرمافزار شما هستند. از مرتبسازی و جستجو گرفته تا ناوبری نمودار و برنامهنویسی پویا، تسلط بر این الگوریتمها مهارتهای حل مسئله شما را افزایش میدهد و فرصتهای جدیدی را در سفر کدنویسی شما باز میکند.
آموزش ها و منابع هیجان انگیز بیشتری را در DevToys.io، زمین بازی خود برای توسعه نرم افزار همه چیز، کاوش کنید. کد نویسی مبارک!
❤️ اگر از این مقاله لذت بردید، برای اطلاعات بیشتر به انجمن هکرهای ما مراجعه کنید! در خبرنامه ما ثبت نام کنید تا جلوتر باشید! DevToys.io 👽