نمایش الگوریتمهای مرتبسازی PyQt یک برنامه پیشرفته است که به کاربران کمک میکند تا الگوریتمهای مرتبسازی مختلف را real time درک کرده و مشاهده کنند. این ابزار که با استفاده از فریمورک PyQt5 ساخته شده، نمای گرافیکی از عملکرد هر الگوریتم مرتبسازی را بر روی یک آرایه از اعداد ارائه میدهد. این برنامه به ویژه برای اهداف آموزشی مفید است، زیرا کاربران میتوانند فرآیند مرتبسازی را مرحلهبهمرحله مشاهده کرده و سرعت و روند آن را کنترل کنند.
ویژگیهای کلیدی نمایش الگوریتمهای مرتبسازی PyQt
نمایش تعاملی:
- برنامه آرایه را بهصورت مجموعهای از barها نمایش میدهد که ارتفاع هر یک نشاندهنده مقدار عنصر در آرایه است.
- در حین مرتبسازی، barهایی که مقایسه یا جابهجا میشوند با رنگهای خاصی مشخص شده و روند الگوریتم را قابل مشاهده میکنند.
انعطافپذیری در ورود دادهها:
- کاربران میتوانند آرایه موردنظر خود را وارد کرده یا یک آرایه تصادفی با اندازه مشخص ایجاد کنند.
- این قابلیت به کاربران اجازه میدهد که الگوریتمها را با دادههای سفارشی یا دادههای تصادفی آزمایش کنند.
کنترل بر فرآیند مرتبسازی:
- شروع مرتبسازی: اجرای الگوریتم مرتبسازی انتخابشده بر روی آرایه موردنظر.
- توقف مرتبسازی: توقف موقت فرآیند مرتبسازی برای بررسی وضعیت کنونی آرایه.
- ادامه مرتبسازی: ادامه اجرای مرتبسازی از نقطهای که متوقف شده بود.
- لغو مرتبسازی: متوقف کردن فرآیند مرتبسازی و بازنشانی برنامه برای اجرای جدید.
بهروزرسانیهای لحظهای:
- برنامه نمایش مرتبسازی را در real time نمایش داده و به کاربران اجازه میدهد که سرعت را تنظیم کرده و روند مرتبسازی را دنبال کنند.
ابزار آموزشی:
- این برنامه یک ابزار عالی برای آموزش و یادگیری الگوریتمهای مرتبسازی مختلف است.
- با ارائه نمایش مرحلهبهمرحله، درک نحوه عملکرد هر الگوریتم برای دانشجویان و مبتدیان سادهتر میشود.
محتویات برنامه
ویژگیهای سورس کد
رابط کاربری گرافیکی (GUI) با PyQt5
- رابط کاربری ساده و کاربرپسند برای انتخاب الگوریتم مرتبسازی، وارد کردن اعداد و کنترل سرعت مرتبسازی.
- نمایش بلادرنگ مرتبسازی با استفاده از barهای نمایانگر عناصر آرایه.
پشتیبانی از چندین الگوریتم مرتبسازی
- مرتبسازی حبابی (Bubble Sort)
- مرتبسازی درجی (Insertion Sort)
- مرتبسازی سریع (Quick Sort)
- مرتبسازی سطلی (Bucket Sort)
- مرتبسازی شمارشی (Counting Sort)
- مرتبسازی انتخابی (Selection Sort)
- مرتبسازی هیپ (Heap Sort)
بصریسازی پویا
- استفاده از QGraphicsView و QGraphicsScene برای نمایش انیمیشنی مراحل مرتبسازی.
- مشخصکردن عناصر در حال جابهجایی با رنگ قرمز و عناصر مرتبشده با رنگ سبز.
کنترلهای تعاملی
- شروع مرتبسازی: آغاز مرتبسازی با الگوریتم انتخابی.
- توقف مرتبسازی: توقف اجرای مرتبسازی در مرحله کنونی.
- ادامه مرتبسازی: ادامه مرتبسازی از آخرین مرحله توقف.
اجرای چندنخی (Multi-Threaded Execution)
- استفاده از QThread برای اجرای الگوریتمهای مرتبسازی در یک نخ جداگانه، به طوری که رابط کاربری بدون تأخیر باقی بماند.
سرعت مرتبسازی قابل تنظیم
- کاربران میتوانند زمان تأخیر (بر حسب میلیثانیه) را تغییر داده و سرعت مرتبسازی را کم یا زیاد کنند.
نحوه عملکرد برنامه
این برنامه با استفاده از PyQt5 ساخته شده که یک مجموعه از بایندینگهای پایتون برای فریمورک Qt است. اجزای اصلی برنامه شامل موارد زیر است:
کلاسهای SortingAlgorithmWorker
- این کلاسها از QThread ارثبری کرده و الگوریتمهای مرتبسازی را اجرا میکنند.
- آنها از سیگنالها برای بهروزرسانی بصریسازی و اعلام توقف یا اتمام مرتبسازی استفاده میکنند.
کلاس SortingApp
- این کلاس پنجره اصلی برنامه را مدیریت میکند.
- ورودی کاربر را دریافت کرده، فرآیند مرتبسازی را کنترل میکند و نمای گرافیکی آرایه را بهروزرسانی میکند.
اجزای کلیدی کد
SortingAlgorithmWorker
- این کلاسها الگوریتمهای مرتبسازی را در نخهای جداگانه اجرا کرده و از طریق سیگنالها با رابط کاربری ارتباط برقرار میکنند.
- سیگنالهای update_visualization، sort_paused و sorting_done برای هماهنگی با نخ اصلی فرستاده میشوند.
- کاربران میتوانند مرتبسازی را با استفاده از متدهای pause()، resume() و stop() متوقف، ادامه و لغو کنند.
SortingApp
- این کلاس مدیریت رابط کاربری گرافیکی و تعاملات کاربر را بر عهده دارد.
- شامل المانهای رابط کاربری مانند فیلدهای ورودی، دکمهها و نمای گرافیکی است.
- دکمههای شروع، توقف، ادامه یا لغو مرتبسازی را مدیریت میکند.
- متد visualize_data() آرایه را در QGraphicsScene نمایش میدهد.
بصریسازی دادهها
- آرایه با استفاده از QGraphicsRectItem برای barها و QGraphicsTextItem برای مقادیر عددی نمایش داده میشود.
- میلهها هنگام مقایسه یا جابهجایی رنگ متفاوتی داشته و در حالت عادی به رنگ پیشفرض بازمیگردند.
موارد استفاده از برنامه
اهداف آموزشی
- این ابزار برای کلاسهای درس یا محیطهای یادگیری فردی بسیار مفید است و به دانشجویان اجازه میدهد تا الگوریتمهای مرتبسازی را بهصورت تعاملی درک کنند.
آزمایش الگوریتمها
- توسعهدهندگان میتوانند الگوریتمهای مرتبسازی مختلف را با مجموعه دادههای متفاوت آزمایش کرده و رفتار آنها را مشاهده کنند.
اشکالزدایی و تحلیل
- امکان توقف و ادامه مرتبسازی به کاربران اجازه میدهد تا در هر مرحله رفتار الگوریتم را بررسی کنند.
نکات برجسته محصول
✅ رابط کاربری گرافیکی PyQt5 – رابطی تمیز و تعاملی برای بصریسازی مرتبسازی
✅ اجرای مرتبسازی چندنخی – مرتبسازی بدون تأخیر و رابط کاربری پاسخگو
✅ پشتیبانی از چندین الگوریتم مرتبسازی – حبابی، درجی، سریع، انتخابی، هیپ، شمارشی و سطلی
✅ بصریسازی پویا – انیمیشنهای رنگی برای درک بهتر و اشکالزدایی
نتیجهگیری
نمایش الگوریتمهای مرتبسازی PyQt یک ابزار قدرتمند و شهودی برای درک الگوریتمهای مرتبسازی مختلف است. با ارائه بصریسازی بلادرنگ و کنترلهای تعاملی، فرآیند یادگیری را جذاب و قابلفهم میکند.
دسترسی به کد منبع:
کد منبع این ابزار در فایل pyqtsorting.py
موجود است. برای اجرای برنامه، اطمینان حاصل کنید که Python و PyQt5 نصب هستند و دستور زیر را اجرا کنید:
python pyqtsorting.py
این کار برنامه را اجرا کرده و به شما امکان میدهد الگوریتمهای مرتبسازی مختلف را بهصورت تعاملی کاوش کنید.
نقد و بررسیها
هنوز بررسیای ثبت نشده است.