C#实现快速排序算法

 C#实现快速排序算法

以下是C#中的快速排序算法实现示例:

using System;

class QuickSort
{
    // 快速排序入口函数
    public static void Sort(int[] array)
    {
        QuickSortRecursive(array, 0, array.Length - 1);
    }

    // 递归函数实现快速排序
    private static void QuickSortRecursive(int[] array, int left, int right)
    {
        if (left < right)
        {
            int pivotIndex = Partition(array, left, right);
            QuickSortRecursive(array, left, pivotIndex - 1);
            QuickSortRecursive(array, pivotIndex + 1, right);
        }
    }

    // 划分函数
    private static int Partition(int[] array, int left, int right)
    {
        int pivot = array[right];
        int i = left - 1;

        for (int j = left; j < right; j++)
        {
            if (array[j] < pivot)
            {
                i++;
                Swap(array, i, j);
            }
        }

        Swap(array, i + 1, right);
        return i + 1;
    }

    // 交换数组中的两个元素
    private static void Swap(int[] array, int i, int j)
    {
        int temp = array[i];
        array[i] = array[j];
        array[j] = temp;
    }

    // 打印数组元素
    public static void PrintArray(int[] array)
    {
        foreach (var item in array)
        {
            Console.Write(item + " ");
        }
        Console.WriteLine();
    }

    // 测试示例
    static void Main(string[] args)
    {
        int[] array = { 12, 4, 7, 2, 10, 1, 15, 3, 6, 11 };
        Console.WriteLine("Original array:");
        PrintArray(array);

        Sort(array);
        Console.WriteLine("Sorted array:");
        PrintArray(array);
    }
}

这段代码实现了快速排序算法。在 Sort 函数中,我们首先调用 QuickSortRecursive 函数来递归地执行快速排序。QuickSortRecursive 函数中,我们首先选择一个基准元素(这里选择数组的最后一个元素作为基准),然后根据基准元素将数组分为两部分,左侧部分小于基准,右侧部分大于等于基准。然后再分别对左右两部分递归执行快速排序。

Partition 函数负责实现划分步骤,它遍历数组,将小于基准的元素放在左侧,大于等于基准的元素放在右侧,并返回基准的最终位置。

Swap 函数用于交换数组中的两个元素。

PrintArray 函数用于打印数组元素。

Main 函数中,我们创建一个示例数组,并调用 Sort 函数对其进行排序,然后打印排序后的结果。

 C#实现快速排序算法

以下是C#中的快速排序算法实现示例:

using System;

class QuickSort
{
    // 快速排序入口函数
    public static void Sort(int[] array)
    {
        QuickSortRecursive(array, 0, array.Length - 1);
    }

    // 递归函数实现快速排序
    private static void QuickSortRecursive(int[] array, int left, int right)
    {
        if (left < right)
        {
            int pivotIndex = Partition(array, left, right);
            QuickSortRecursive(array, left, pivotIndex - 1);
            QuickSortRecursive(array, pivotIndex + 1, right);
        }
    }

    // 划分函数
    private static int Partition(int[] array, int left, int right)
    {
        int pivot = array[right];
        int i = left - 1;

        for (int j = left; j < right; j++)
        {
            if (array[j] < pivot)
            {
                i++;
                Swap(array, i, j);
            }
        }

        Swap(array, i + 1, right);
        return i + 1;
    }

    // 交换数组中的两个元素
    private static void Swap(int[] array, int i, int j)
    {
        int temp = array[i];
        array[i] = array[j];
        array[j] = temp;
    }

    // 打印数组元素
    public static void PrintArray(int[] array)
    {
        foreach (var item in array)
        {
            Console.Write(item + " ");
        }
        Console.WriteLine();
    }

    // 测试示例
    static void Main(string[] args)
    {
        int[] array = { 12, 4, 7, 2, 10, 1, 15, 3, 6, 11 };
        Console.WriteLine("Original array:");
        PrintArray(array);

        Sort(array);
        Console.WriteLine("Sorted array:");
        PrintArray(array);
    }
}

这段代码实现了快速排序算法。在 Sort 函数中,我们首先调用 QuickSortRecursive 函数来递归地执行快速排序。QuickSortRecursive 函数中,我们首先选择一个基准元素(这里选择数组的最后一个元素作为基准),然后根据基准元素将数组分为两部分,左侧部分小于基准,右侧部分大于等于基准。然后再分别对左右两部分递归执行快速排序。

Partition 函数负责实现划分步骤,它遍历数组,将小于基准的元素放在左侧,大于等于基准的元素放在右侧,并返回基准的最终位置。

Swap 函数用于交换数组中的两个元素。

PrintArray 函数用于打印数组元素。

Main 函数中,我们创建一个示例数组,并调用 Sort 函数对其进行排序,然后打印排序后的结果。

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在