مرتب سازی حبابی سی شارپ
در این نوشته قصد بررسی الگوریتم مرتب سازی حبابی که در اکثر مباحث ساختمان داده بررسی میشود بپردازیم. در پایان آن را با زبان برنامه نویسی سی شارپ پیاده سازی میکنیم.
پیشنهاد نویسنده: الگوریتم مرتب سازی حبابی با PHP
مرتب سازی حبابی سی شارپي
الگوریتم مرتبسازی حبابی چیست؟
الگوریتم مرتبسازی ، در دانش رایانه و ریاضی، الگوریتمی است که بعد از اجرای آن فهرستی از دادهها را به ترتیبی تعریف شده تبدیل میشود. پرکاربردترین ترتیبها، ترتیبهای عددی (نزولی، صعودی و …) هستند. مرتبسازی در بهینهسازی الگوریتمهایی که به فهرستهای مرتب شده نیاز دارند اهمیت بسیار زیادی دارد. از آغاز علم رایانه مسائل مرتب سازی در ساختمات داده بررسیهای فراوانی را متوجه خود ساختند. شاید به این علت که در عین ساده بودن این عملیات، حل آن به صورت کامل و عملی کمی پیچیده است. برای نمونه مرتبسازی حبابی در سال ۱۹۵۶ میلادی به وجود آمد. در آن زمان بسیاری این را یک مسئله را حل شده میپنداشتند.
مبحث مرتب سازی دادهها در کلاسهای معرفی علم رایانه بسیار پرکاربرد و پر بحث است. مبحثی که در آن وجود الگوریتمهای فراوان به آشنایی با ایدههای کلی و مراحل طراحی الگوریتمهای گوناگون کمک میکند. مرتبسازی حبابی که به زبان انگلیسی به Bubble sort معروف است یک الگوریتم مرتب سازی بسیار ساده است. در این الگوریتم دادهها در یک لیست پشت سرهم پیمایش میشوند. هر بار عناصر کنار هم را با هم مقایسه و اگر در جای نادرست (با توجه به شرط مرتب سازی) بودند به جای مناسب خود منتقل کند. در این الگوریتم این کار باید تا زمانی که هیچ انتقالی در لیست نیاز نشود رخ دهد، ادامه یابد و در آن زمان لیست مرتب شدهاست. در مرتبسازی حبابی هر عنصر با عنصر کناری خود مقایسه شده و در صورتی که از آن کوچکتر شود جای خود را به آن میدهد. این کار همچنان پیش میرود تا کوچکترین عنصر دادهای به پایین لیست برسد و دیگران نیز به ترتیب در جای خود قرار گیرند.
مرتب سازی حبابی با c#
کد این الگوریتم را در زیر مشاهده میکنید:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace WpfApplication { public class Sort { /* public string showArr() { string result = ""; for (int i = 0; i <= 9; i++) { result += a[i] + " - "; } return result; } */ public void hobab(ref int[] a) { for (int i = 0; i <= 9; i++) { for (int j = 0; j <= 8; j++) { if (a[j] > a[j + 1]) { int x; x = a[j + 1]; a[j + 1] = a[j]; a[j] = x; } } } } } }
برای یادگیری مفاهیم ساختمان داده کتاب ساختمان داده را دانلود کنید. اگر کد مناسبتری از این الگوریتم در دسترس دارید آنرا برای ما ارسال کنید.
ارسال پاسخ