蓝桥杯实战应用【算法代码篇】-希尔排序(附Java、python、C语言和C++代码实现)

目录

前言

几个相关概念

 几个高频面试题目

比较类和非比较类的区别

直接插入排序和希尔排序的比较

算法原理

算法思想

分组思想

 排序

希尔排序插入法

希尔排序交换法 

伪代码

算法步骤

步骤示例

排序代码

复杂度及稳定性

性能

稳定性

代码实现

Python

Java

C语言

C++


前言

希尔排序Shell Sort,也被称作希尔的方法Shell's method.是一种就地比较排序。它可以被看作是通过交换(冒泡排序)或通过插入排序(插入排序)来进行排序的一种概括。该方法首先对彼此之间的元素进行排序,然后逐步减少元素之间的差距。从远的分离元素开始,它可以移动一些不在适当位置的元素,这比只是简单的交换相临近的元素更快。1959年,唐纳德 希尔发版了第一个版本。希尔排序的运行时间很大程度上依赖于它所使用的间隙序列。对于许多实用的变体,确定它们的时间复杂度仍然是一个开放的问题,存在不确定性。蓝桥杯实战应用【算法代码篇】-希尔排序(附Java、python、C语言和C++代码实现)_第1张图片

希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。

希尔排序是基于插入排序的以下两点性质而提出改进方法的:

  • 插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率;

  • 但插入排序一般来说是低效的

你可能感兴趣的:(排序算法,算法,数据结构)