目录
百战程序员,全站22050+开发课程+文档 ,学习精选优质好课快人一步!观看视频 快捷键ALT+N

Python全系列 教程

3567个小节阅读:5930.4k

收藏
全部开发者教程

鸿蒙应用开发

C语言快速入门

JAVA全系列 教程

面向对象的程序设计语言

Python全系列 教程

Python3.x版本,未来主流的版本

人工智能 教程

顺势而为,AI创新未来

大厂算法 教程

算法,程序员自我提升必经之路

C++ 教程

一门通用计算机编程语言

微服务 教程

目前业界流行的框架组合

web前端全系列 教程

通向WEB技术世界的钥匙

大数据全系列 教程

站在云端操控万千数据

AIGC全能工具班

A

A A

White Night

阅读(168)
赞(0)

希尔排序

希尔排序

希尔排序(Shell Sort)是一种改进的插入排序算法,它是非稳定的原地排序算法。

希尔排序的主要思想是将整个待排序的序列分割成若干子序列,对每个子序列进行插入排序,最终合并这些子序列

算法思路

  • 选择增量序列: 首先选择一个增量序列,这个序列的选择对希尔排序的性能影响很大。常用的增量序列有希尔增量(n/2,n/4,…,…,1)

  • 按增量分组: 将待排序的序列按照增量分成若干子序列,每个子序列相对独立

  • 对每个子序列进行插入排序: 对每个子序列使用插入排序算法进行排序

  • 逐步缩小增量: 不断缩小增量,重复上述步骤,直到增量为1

  • 最后一次插入排序: 当增量为1时,整个序列成为一个序列,进行最后一次插入排序

img

举例

image-20230314182525330

代码

特性

  • 时间复杂度 $ O(n^2) $:希尔排序的时间复杂度与增量序列的选择有关。在最坏情况下,时间复杂度为$ O(n^2) $。最好的情况是$ O(n) $

  • 空间复杂度 $ O(1) $、原地排序:希尔排序只需要常数级别的额外空间来存储增量和临时变量

  • 不稳定排序:希尔排序是一种不稳定的排序算法,即相等元素的相对顺序在排序过程中可能发生变化

实时效果反馈

1. 关于希尔排序算法,说法正确的是?

A 希尔排序需要反复比较相邻的元素

B 希尔排序每一轮都是俩俩比较元素

C 希尔排序是要插入排序做为辅助排序

D 希尔排序分组数据没有特别严格规则

答案

1=>D

北京市昌平区回龙观镇南店村综合商业楼2楼226室

©2014-2023 百战卓越(北京)科技有限公司 All Rights Reserved.

京ICP备14032124号-2