直接插入排序和希尔排序

直接插入排序属于简单排序,是一种稳定排序算法,希尔排序是直接插入排序的改进,降低了时间复杂度,现在为了方便交流和自己今后的学习,将自己学习插入排序和希尔排序的代码在博客中分享,一块交流。

 //直接插入排序
    public static void DirectInsertSort(int[] arrays)
    {
        for (int i=1;i<arrays.length;i++)
        {
            int j;
            if (arrays[i]<arrays[i-1])
            {
                //若后一个数要插入的数比前面已经排好序的数要小,就在前面已排好序的数组中找到合适的位置插入
                int temp=arrays[i];
                for ( j=i-1;j>=0&&arrays[j]>temp;j--)
                {
                    //开始后移
                    arrays[j+1]=arrays[j];
                }
                arrays[j+1]=temp;//插入到正确位置
            }
        }
        Print(arrays);
    }
    //希尔排序
    public static void ShellSort(int[] arrays)
    {
        int increment=arrays.length;
        int j;
        do
        {
            increment=increment/3+1;
            for (int i=increment;i<arrays.length;i+=increment)
            {//通过一个增量实现跳跃式移动,增加排序效率
                if (arrays[i]<arrays[i-increment])
                {
                    int temp=arrays[i];
                    for ( j=i-increment;j>=0&&arrays[j]>temp;j-=increment)
                        arrays[j+increment]=arrays[j];
                    arrays[j+increment]=temp;
                }
            }
        }while (increment>1);
        Print(arrays);
    }

其中print(int[] arrays)是一个输出数组中的每一个元素的函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值