要想对一维数组通过希尔排序法进行排序,首先,我们要了解什么是希尔排序法?希尔排序(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("未进行排序。"); } }
评论