前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >排序算法之希尔排序-Java版

排序算法之希尔排序-Java版

作者头像
shengjk1
发布2020-04-13 11:47:08
6650
发布2020-04-13 11:47:08
举报
文章被收录于专栏:码字搬砖码字搬砖

1. 希尔排序

1.1 希尔排序的基本介绍

希尔排序是加强版的插入排序,相对与普通的插入排序做了优化,比普通的插入排序多了一个步长的概念

1.2 希尔排序思想

就是把数据下标按照一定的步长进行分组,然后每组分别用普通插入排序进行排序,知道步长减至为 1 时,算法终止。

1.3 希尔排序的时间复杂度和空间复杂度等

算法名称

平均时间复杂度

最好情况

最坏情况

空间复杂度

稳定性

希尔排序

O(nlogn)

O(nlogn)

O(nlogn)

O(1)

不稳定

2. 代码演示

代码语言:javascript
复制
/**
 * @author shengjk1
 * @date 2020/4/9
 */
public class ShellSort {
	public static void main(String[] args) {
		int[] arr = {1, -2, 2, -3, 5, 0};
		
		for (int gap = arr.length / 2; gap > 0; gap /= 2) {
			
			for (int j = gap; j < arr.length; j += gap) {
				int insertIndex = j;
				int insertValue = arr[insertIndex];
				
				while (insertIndex - gap >= 0 && arr[insertIndex - gap] > insertValue) {
					arr[insertIndex] = arr[insertIndex - gap];
					insertIndex -= gap;
				}
				arr[insertIndex] = insertValue;
				System.out.printf("第%d次遍历 insertIndex %d arr:%s", j, insertIndex, Arrays.toString(arr));
				System.out.println();
			}
		}
	}
}

代码基本与普通插入排序一致。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-04-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 希尔排序
    • 1.1 希尔排序的基本介绍
      • 1.2 希尔排序思想
        • 1.3 希尔排序的时间复杂度和空间复杂度等
        • 2. 代码演示
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档