مقدمه ای بر الگوریتم الگوریتم مرتبسازی سریع (Quick Sort)
در برنامهنویسی، الگوریتم مرتبسازی سریع یکی از روشهای موثر برای مرتبسازی دادهها است. این الگوریتم بر اساس استراتژی تقسیم و حل مسئله عمل میکند و به تدریج عناصر را تقسیم میکند تا تا زمانی که دادهها کاملاً مرتب شوند. در این مقاله، به بررسی الگوریتم مرتبسازی سریع و نحوه پیادهسازی آن در زبان برنامهنویسی C# میپردازیم.
الگوریتم مرتبسازی سریع (Quick Sort)
الگوریتم مرتبسازی سریع به شکل زیر عمل میکند:
- یک عنصر را به عنوان عنصر محوری (pivot) انتخاب کنید.
- عناصر کوچکتر از pivot را در یک زیرآرایه سمت چپ آرایه قرار دهید.
- عناصر بزرگتر از pivot را در یک زیرآرایه سمت راست آرایه قرار دهید.
- زیرآرایه سمت چپ و زیرآرایه سمت راست را به صورت بازگشتی مرتب کنید.
- با ادغام زیرآرایهها سمت چپ، pivot و زیرآرایهها سمت راست، آرایه نهایی را بسازید.
پیادهسازی الگوریتم مرتبسازی سریع در سی شارپ
در زبان برنامهنویسی C#، میتوان الگوریتم مرتبسازی سریع را به صورت زیر پیادهسازی کرد:
public static void QuickSort(int[] array, int low, int high)
{
if (low < high)
{
int pivotIndex = Partition(array, low, high);
QuickSort(array, low, pivotIndex - 1);
QuickSort(array, pivotIndex + 1, high);
}
}
private static int Partition(int[] array, int low, int high)
{
int pivot = array[high];
int i = low - 1;
for (int j = low; j < high; j++)
{
if (array[j] < pivot)
{
i++;
Swap(array, i, j);
}
}
Swap(array, i + 1, high);
return i + 1;
}
private static void Swap(int[] array, int i, int j)
{
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
توضیحات
در این پیادهسازی، از تابع QuickSort
برای مرتبسازی آرایه استفاده میشود. این تابع به عنوان ورودی آرایه، نقطه شروع (low) و نقطه پایان (high) را دریافت میکند. ابتدا تابع Partition
را فراخوانی میکند تا pivot را پیدا کند و آرایه را بر اساس آن تقسیم کند. سپس تابع QuickSort
را برای دو زیرآرایه سمت چپ و سمت راست pivot فراخوانی میکند. این عملیات با استفاده از بازگشت، تا زمانی که آرایه کاملاً مرتب شود، تکرار میشود.
نتیجه گیری
در این مقاله، الگوریتم مرتبسازی سریع را معرفی کرده و نحوه پیادهسازی آن در زبان برنامهنویسی C# را بررسی کردیم. الگوریتم مرتبسازی سریع یکی از الگوریتمهای سریع و موثر برای مرتبسازی دادههاست. با استفاده از پیادهسازی صحیح الگوریتم مرتبسازی سریع در زبان C#، میتوانیم بهبود عملکرد برنامهها در مسائل مرتبط با مرتب سازی دادهها را به دست آوریم. در پایان توصیه می کنیم برای یادگیری هر چه بهتر این مطالب از پکیج کامل آموزش الگوریتم ها و ساختمان داده ها در سی شارپ استفاده کنید.