Unity学习之C#___排序算法2(插入排序、希尔排序、归并排序)

本文详细介绍了C#中的三种排序算法:插入排序、希尔排序和归并排序。通过代码实现和测试,解释了每种算法的工作原理和效率提升。希尔排序是对插入排序的优化,归并排序则采用分治策略。测试结果显示,这些排序算法在不同场景下表现各异。

Unity学习之C#___排序算法
上一篇排序算法中我们分享了四种排序算法:简单选择排序、插入排序、冒泡排序和快速排序,这次分享希尔排序、归并排序和另一种写法的插入排序

一、插入排序

上一篇文章中我在写插入排序的时候,将大于当前元素的索引向后移动一位,但是我发现了一种更简单的写法(其实上看维基百科学的。。)这里直接交换值的位置,因为temp的值是在循环外拿到的,所以可以一直持有比较,直到赋值到正确的位置。
维基百科上演示的图:这张图演示的是我之前写的那个算法,这次算法不同的是,注意:以2举例,在2往前比较时,其实每比较一次不仅是把大于2的数向后移动一位,同时还把2往前挪了一位并赋值(代码17行)

代码
 /// <summary>
        /// 插入排序
        /// </summary>
        /// <param name="array"></param>
       static void InsetSortPlus(int[] array)
        {
            for (int i = 1; i < array.Length; i++)
            {
                int temp = array[i];
                //拿i 前面所有的值依次和 i 比较,如果比 i 大往后赋值,在把temp赋值过去,
                //如果有一个比 i 小 那就推出循环,i 位置不动,因为 i 的前面已经是有序数列了。
                for (int j = i-1; j>=0 ; j--)
                {
                    if(array[j]>temp)
                    {
                        array[j + 1] = array[j];
                        array[j] = temp;
                    }
                    else
                    {
                        break;
                    }
                }
            }
        }
二、希
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值