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