Shell 排序
博客专区 > 兔之 的博客 > 博客详情
Shell 排序
兔之 发表于2年前
Shell 排序
  • 发表于 2年前
  • 阅读 19
  • 收藏 2
  • 点赞 1
  • 评论 0

移动开发云端新模式探索实践 >>>   

Shell 排序把二分的想法加了进去,是基于插入排序的改进。先粗一点分组,再进行插入排序;再细一点分组,再插入排序。

public class ShellSort 
{
    public static void insertionSort(int[] data, int start, int step)
    {
        for (int i = start; i < data.length; i += step)
        {
            for (int j = i; j > 0; j -= step)
            {
                if (data[j] < data[j-1])
                {
                    int temp = data[j];
                    data[j] = data[j-1];
                    data[j-1] = temp;
                }
                else break;
            }
        }
    }

    public static void sort(int[] data)
    {
        int len= data.length;
        for (int step = len / 2; step > 0; step /= 2)
        {
            for (int start = 0; start < step; start++)
            {
                //调用插入排序
                insertionSort(data, start, step);
            }
        }
    }

    public static void main(String[] argv)
    {
        int[] data = {5, 1, 2, 6, 8, 10, 3, 6, 12, 7};
        sort(data);

        for(int i: data)
            System.out.println(i);
    }
}

参考

https://class.coursera.org/algs4partI-010/lecture/27

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 66
博文 244
码字总数 95573
作品 7
×
兔之
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: