直接插入排序和希尔排序

来源:互联网 发布:射手座女生 知乎 编辑:程序博客网 时间:2024/04/30 02:00

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

 //直接插入排序    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)是一个输出数组中的每一个元素的函数

0 0
原创粉丝点击