溫馨提示×

如何用c#實(shí)現(xiàn)遞歸排序

c#
小樊
82
2024-10-09 06:52:32
欄目: 編程語言

在C#中,可以使用遞歸方法來實(shí)現(xiàn)各種排序算法,例如快速排序、歸并排序等。這里以快速排序?yàn)槔?,介紹如何使用C#實(shí)現(xiàn)遞歸排序:

  1. 首先,創(chuàng)建一個控制臺應(yīng)用程序項(xiàng)目。

  2. Program.cs文件中,編寫以下代碼:

using System;

namespace RecursiveSort
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] arr = { 10, 7, 8, 9, 1, 5 };
            Console.WriteLine("原始數(shù)組:");
            PrintArray(arr);

            QuickSort(arr, 0, arr.Length - 1);

            Console.WriteLine("\n排序后的數(shù)組:");
            PrintArray(arr);
        }

        static void QuickSort(int[] arr, int low, int high)
        {
            if (low < high)
            {
                int pivotIndex = Partition(arr, low, high);
                QuickSort(arr, low, pivotIndex - 1);
                QuickSort(arr, pivotIndex + 1, high);
            }
        }

        static int Partition(int[] arr, int low, int high)
        {
            int pivot = arr[high];
            int i = low - 1;

            for (int j = low; j <= high - 1; j++)
            {
                if (arr[j] < pivot)
                {
                    i++;
                    Swap(arr, i, j);
                }
            }
            Swap(arr, i + 1, high);
            return (i + 1);
        }

        static void Swap(int[] arr, int i, int j)
        {
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }

        static void PrintArray(int[] arr)
        {
            for (int i = 0; i < arr.Length; i++)
            {
                Console.Write(arr[i] + " ");
            }
            Console.WriteLine();
        }
    }
}
  1. 運(yùn)行程序,你將看到以下輸出:
原始數(shù)組:
10 7 8 9 1 5 
排序后的數(shù)組:
1 5 7 8 9 10 

這個示例中,我們使用了快速排序算法對數(shù)組進(jìn)行遞歸排序。QuickSort方法是遞歸的核心,它接受數(shù)組、低索引和高索引作為參數(shù)。Partition方法用于將數(shù)組劃分為兩部分,使得左邊的元素小于樞軸元素,右邊的元素大于樞軸元素。Swap方法用于交換數(shù)組中的兩個元素。PrintArray方法用于打印數(shù)組。

0