c#如何通过希尔排序法对一维数组进行排序?

济南云服务器 2025年3月3日09:55:14C#教程c#如何通过希尔排序法对一维数组进行排序?已关闭评论131阅读模式

要想对一维数组通过希尔排序法进行排序,首先,我们要了解什么是希尔排序法?希尔排序(Shell Sort)是一种基于插入排序的排序算法,它通过比较距离一定间隔的元素并逐步减小这个间隔来工作。下面是使用C#实现希尔排序法对一维数组进行排序的示例代码。该代码首先随机生成一个一维数组,然后询问用户是否对该数组进行希尔排序,并将原数组与排序后的数组分行打印到控制台

关键代码:

    static void ShellSort(int[] array)
    {
        int n = array.Length;
        for (int gap = n / 2; gap > 0; gap /= 2)
        {
            for (int i = gap; i < n; i++)
            {
                int temp = array[i];
                int j;
                for (j = i; j >= gap && array[j - gap] > temp; j -= gap)
                {
                    array[j] = array[j - gap];
                }
                array[j] = temp;
            }
        }
    }

    static void Main(string[] args)
    {
        Random rand = new Random();
        // 随机生成一个包含10个整数的一维数组
        int[] arr = new int[10];
        for (int i = 0; i < arr.Length; i++)
        {
            arr[i] = rand.Next(1, 100); // 生成1到99之间的随机整数
        }

        Console.WriteLine("生成的一维数组为:");
        Console.WriteLine(string.Join(", ", arr));

        Console.Write("是否对该数组进行希尔排序?(y/n): ");
        string response = Console.ReadLine();

        if (response.ToLower() == "y")
        {
            // 创建数组的一个副本用于排序
            int[] sortedArr = (int[])arr.Clone();
            ShellSort(sortedArr);

            Console.WriteLine("\n原数组为:");
            Console.WriteLine(string.Join(", ", arr));
            Console.WriteLine("希尔排序后的一维数组为:");
            Console.WriteLine(string.Join(", ", sortedArr));
        }
        else
        {
            Console.WriteLine("未进行排序。");
        }
    }

济南云服务器
  • 本文由 发表于 2025年3月3日09:55:14
  • 转载请务必保留本文链接:http://news.hcsw666.com/2030