Python3
200 subscribers
100 photos
6 videos
26 files
518 links
🎓 آموزش و پروژه‌های Python
آموزش‌های کاربردی و پروژه‌های عملی Python برای همه سطوح. 🚀
Download Telegram
درود دوستان! 👋
امروز می‌خوایم درباره دو تا از مهم‌ترین الگوریتم‌های برنامه‌نویسی صحبت کنیم: مرتب‌سازی سریع (Quick Sort) و الگوریتم‌های جست‌وجو (Search Algorithms). بریم که با این الگوریتم‌ها بیشتر آشنا بشیم! 🚀

📌 الگوریتم مرتب‌سازی سریع (Quick Sort)
الگوریتم Quick Sort یکی از کارآمدترین الگوریتم‌های مرتب‌سازی هست که از روش تقسیم و حل (Divide and Conquer) استفاده می‌کنه. این الگوریتم به صورت زیر کار می‌کنه:
1. انتخاب محور (Pivot): یک عنصر رو به عنوان محور انتخاب می‌کنیم.
2. تقسیم‌بندی: آرایه رو به دو بخش تقسیم می‌کنیم، طوری که عناصر کمتر از محور در یک بخش و عناصر بزرگتر در بخش دیگر قرار بگیرن.
3. بازگشت (Recursion): برای هر دو بخش به صورت بازگشتی همین کار رو انجام می‌دیم تا آرایه کاملاً مرتب بشه.

مزیت Quick Sort سرعت بالا و کارایی خوبش در اکثر موارده، هر چند که در بدترین حالت می‌تونه O(n^2) باشه. ولی با انتخاب مناسب محور، معمولاً کارایی اون به O(n log n) می‌رسه.

نمونه کد Quick Sort :

def quick_sort(arr):
if len(arr) <= 1:
return arr
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)

# استفاده
arr = [3, 6, 8, 10, 1, 2, 1]
print("Sorted array:", quick_sort(arr))

📌 الگوریتم‌های جست‌وجو (Search Algorithms)
الگوریتم‌های جست‌وجو برای پیدا کردن یک عنصر خاص در یک مجموعه داده استفاده می‌شن. دو تا از پرکاربردترین این الگوریتم‌ها عبارتند از:

1. جست‌وجوی خطی (Linear Search):
- ساده‌ترین روش جست‌وجو هست.
- به ترتیب هر عنصر مجموعه رو بررسی می‌کنه تا عنصر مورد نظر رو پیدا کنه.
- زمان اجرای این الگوریتم O(n) هست.

نمونه کد جست‌وجوی خطی :

def linear_search(arr, target):
for i in range(len(arr)):
if arr[i] == target:
return i
return -1

# استفاده
arr = [3, 6, 8, 10, 1, 2, 1]
target = 10
print("Element found at index:", linear_search(arr, target))

2. جست‌وجوی دودویی (Binary Search):
- این الگوریتم برای آرایه‌های مرتب‌شده مناسبه.
- به این صورت کار می‌کنه که عنصر وسط رو بررسی می‌کنه. اگر عنصر مورد نظر بزرگتر یا کوچکتر از عنصر وسط باشه، جست‌وجو رو در نیمه مناسب ادامه می‌ده.
- زمان اجرای این الگوریتم O(log n) هست که خیلی سریع‌تر از جست‌وجوی خطیه.

نمونه کد جست‌وجوی دودویی :

def binary_search(arr, target):
left, right = 0, len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1

# استفاده
arr = sorted([3, 6, 8, 10, 1, 2, 1])
target = 10
print("Element found at index:", binary_search(arr, target))

استفاده از این الگوریتم‌ها به شما کمک می‌کنه تا برنامه‌هاتون بهینه‌تر و سریع‌تر عمل کنن.

📢 به دوستانتون هم بگین بیاین اینجا تا با هم بیشتر یاد بگیریم! 🌟

[اینم کانال منه]

#برنامه_نویسی #آموزش #الگوریتم #مرتب_سازی #جستجو #یادگیری #QuickSort #SearchAlgorithms
1👍1
آموزش استفاده از کلاس‌ها برای پیاده‌سازی الگوریتم مرتب‌سازی سریع (QuickSort) 📚

مرتب‌سازی سریع (QuickSort) یکی از محبوب‌ترین و کارآمدترین الگوریتم‌های مرتب‌سازی است. در این آموزش، نحوه پیاده‌سازی این الگوریتم با استفاده از کلاس‌ها در پایتون را به شما نشان می‌دهیم. 🚀

مرحله 1: تعریف کلاس QuickSort 🧩

ابتدا کلاس QuickSort را تعریف می‌کنیم که شامل متدهای مختلف برای مرتب‌سازی است.
class QuickSort:
def __init__(self, array):
self.array = array # آرایه‌ای که باید مرتب شود

def sort(self):
self._quick_sort(0, len(self.array) - 1) # فراخوانی متد مرتب‌سازی سریع
return self.array # بازگشت آرایه مرتب شده

def _quick_sort(self, low, high):
if low < high:
pivot_index = self._partition(low, high) # پیدا کردن نقطه محوری
self._quick_sort(low, pivot_index - 1) # مرتب‌سازی بخش چپ از نقطه محوری
self._quick_sort(pivot_index + 1, high) # مرتب‌سازی بخش راست از نقطه محوری

def _partition(self, low, high):
pivot = self.array[high] # انتخاب عنصر پایانی به عنوان نقطه محوری
i = low - 1 # اندیس اولین عنصر کوچکتر از نقطه محوری
for j in range(low, high):
if self.array[j] <= pivot:
i += 1
self.array[i], self.array[j] = self.array[j], self.array[i] # تعویض عناصر
self.array[i + 1], self.array[high] = self.array[high], self.array[i + 1] # تعویض نقطه محوری با عنصر در جایگاه i+1
return i + 1

initit__: متد سازنده که آرایه‌ای که باید مرتب شود را دریافت می‌کند.
- sort: متدی که مرتب‌سازی را شروع کرده و آرایه مرتب شده را باز می‌گرداند.
- _q
uick_sort: متد خصوصی برای اجرای الگوریتم مرتب‌سازی سریع.
- _p
artition: متد خصوصی برای تقسیم آرایه به دو بخش بر اساس نقطه محوری.

مرحله 2: استفاده از کلاس QuickSort 📝

حالا با استفاده از کلاس Quic
kSort، آرایه‌ای را مرتب می‌کنیم:
nameme__ mainin__":
array = [10, 7, 8, 9, 1, 5] # آرایه نمونه
sorter = QuickSort(array) # ایجاد نمونه‌ای از کلاس QuickSort
sorted_array = sorter.sort() # مرتب‌سازی آرایه
print("Sorted array:", sorted_array) # نمایش آرایه مرتب شده

- تعریف آرایه: یک آرایه نمونه برای مرتب‌سازی.
- ایجاد نمونه: یک نمونه از کلاس QuickSort با استفاده از آرایه ورودی.
- مرتب‌سازی: فراخوانی متد sort برای مرتب‌سازی آرایه.
- نمایش نتیجه: نمایش آرایه مرتب شده.

توضیحات:
1. تعریف کلاس: کلاس QuickSort را تعریف کردیم که شامل متدهای مختلف برای مرتب‌سازی است.
2. متد سازنده: مinitit__ آرایه‌ای که باید مرتب شود را دریافت می‌کند.
3. متد sort: متد
sort عملیات مرتب‌سازی را شروع کرده و آرایه مرتب شده را باز می‌گرداند.
4. متدهای خصوصی: متدهای
_quick_sort و _partition برای اجرای الگوریتم مرتب‌سازی سریع به کار می‌روند.
5. استفاده از کلاس: یک نمونه از کلاس
QuickSort` ایجاد کرده و آرایه را مرتب کردیم.

استفاده از کلاس‌ها در پایتون می‌تواند برنامه‌نویسی شیءگرا را ساده‌تر و قابل مدیریت‌تر کند. امیدوارم این آموزش برای شما مفید باشد! 😊

(آموزش بیشتر کانال ما)

#Python #QuickSort #آموزش #برنامه_نویسی #مرتب‌سازی
2