1、直接插入排序(InsertionSort)-C#实现

直接插入排序,简单点说就是是指在已排序好的序列中相应的位置插入需要排序的元素。

比如某个有序序列为:{1,4,5,7},现在需要将3插入到序列中,我们只需要从序列的末尾(升序中最大的元素)开始寻找正确的插入位置。

第一步:7>3,所以3应该插到7前面,而在C#语言程序中,我们可以先把7放到当前3的位置(腾出一个空位)

第二步:5>3,所以3也该在5的前面,位移当时7已移到之前3的位置,所以5可以移动到7原来的位置。

第三步:4>3,同理4移动到原理5的位置。

第四步:1<3,所以3应该在1的后面,而移动前的4是在1后面,所以把3插入到4的位置。这样就可以得到序列{1,3,4,5,7}了。

这里给出C#的实现代码:

     public static void InsertionSort(int[] a)
        {
            if (a.Length < 2)
            {
                return;
            }

            for (int i = 0; i < a.Length - 1; i++)
            {

                int j = i + 1;
                int temp = a[j];
                for (; j >0; j--)
                {
                    if (a[j - 1] > temp)
                    {
                        a[j] = a[j - 1];
                    }
                    else
                    {
                        break;
                    }
                }
                a[j ] = temp;
            }
        }

若有更高质量的代码或者需要改正的地方,请您指出,笔者会认真改正,感谢。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值