希尔排序

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

 class Program
    {
        static void Main(string[] args)
        {
            int[] sum = {8, 9, 1, 7, 2, 3, 5, 4, 6, 0};
            ShellSort(sum);
            for (int i = 1; i < sum.Length; i++)
            {
                Console.Write(sum[i] + "  ");
            }

            Console.ReadKey();
        }

        /// <summary>
        /// 希尔排序
        /// </summary>
        /// <param name="array"></param>
        static void ShellSort(int[] array)
        {
            int gap = array.Length / 2;
            
                        while (1 <= gap)
                            {
                                 // 把距离为 gap 的元素编为一个组,扫描所有组
                                for (int i = gap; i < array.Length; i++)
                                    {
                                         int j = 0;
                                         int temp = array[i];
                    
                                         // 对距离为 gap 的元素组进行排序
                                         for (j = i - gap; j >= 0 && temp < array[j]; j = j - gap)
                                             {
                                                array[j + gap] = array[j];
                                            }
                                         array[j + gap] = temp;
                                    }
                
                                 Console.WriteLine("gap={0}", gap);
                                 foreach (int n in array)
                                    {
                                        Console.Write("{0} ", n);
                                 }
                                 Console.WriteLine();
                
                                 gap = gap / 2; // 减小增量
                             }
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值