`
zy19982004
  • 浏览: 661903 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
F6f66edc-1c1a-3859-b76b-a22e740b7aa7
Hadoop学习
浏览量:251950
社区版块
存档分类
最新评论

数据结构与算法学习四:希尔排序

 
阅读更多

一.排序方法

  1. 先取一个小于n的整数increment作为第一个增量,把文件的全部记录分成increment个组。所有距离为increment的倍数的记录放在同一个组中。先在各组内进行直接插人排序。
  2. 取第二个增量increment(小于1中的increment)重复上述的分组和排序,直至所取的增量increment=1,即所有记录放在同一组中进行直接插入排序为止。
  3. 希尔排序实质上是一种分组插入方法。

 

二.动画演示

     http://student.zjzk.cn/course_ware/data_structure/web/flashhtml/shell.htm

 

三.Java代码

 

	public static int[] shellSort(int[] data) {
		int increment = data.length; // 区间为increment
		int temp = 0;
		while (true) {
			increment = increment / 2;
			// 分成了几组,一组一组处理
			for (int x = 0; x < increment; x++) {
				// 下面就是直接插入排序,只是区间由1变成了increment
				for (int i = x + increment; i < data.length; i += increment) {
					if (data[i - increment] > data[i]) {
						temp = data[i];
						int j = i - increment;
						for (; j >= 0 && data[j] > temp; j -= increment) {
							data[j + increment] = data[j];
						}
						data[j + increment] = temp;
					}
				}
			}
			if (increment == 1) {
				break;
			}
		}
		return data;
	}

 

四. 时间复杂度和稳定性

  1. 希尔排序的时间复杂度到现在都还没有定论是多少,原因是因为希尔排序需要大量的数学知识做支撑。时间复杂度介于O (n log2n )-O( ns ) 1<s<2。 希尔排序时间复杂度最坏情况下为O(n2 ),其平均时间复杂度与每次选择的增量密切相关,但要优于直接插入排序。
  2. 希尔排序是不稳定的。
1
0
分享到:
评论

相关推荐

    java数据结构与算法.pdf

    - **八大排序算法**:包括冒泡排序、插入排序、选择排序、快速排序、归并排序、堆排序、希尔排序和计数排序。每种算法都有其特定的应用场景和效率特点。 4. **查找算法**: - **哈希表**:通过哈希函数快速定位...

    C++数据结构与算法 (第4版)

    根据提供的文件信息,这里主要关注的是“C++数据结构与算法(第4版)”这一主题,虽然实际内容并未给出具体章节或知识点,但我们可以基于标题、描述以及部分已知内容来推测书中可能涵盖的关键知识点。 ### C++数据...

    希尔排序,冒泡排序,堆排序等各种排序算法

    本主题将详细探讨希尔排序、冒泡排序、堆排序等经典的排序算法,这些都是数据结构与算法学习中的核心内容,尤其对于北邮数据结构课程来说,理解并掌握这些排序方法至关重要。 1. **插入排序**: 插入排序是一种...

    Java数据结构与算法学习笔记之排序

    Java数据结构与算法学习笔记之排序,主要探讨了六种常见的排序算法:冒泡排序、选择排序、插入排序、希尔排序、归并排序和快速排序。这些排序算法是计算机科学的基础,无论是在日常开发还是面试中都经常遇到。现在...

    “数据结构与算法”课程学习总结报告

    《“数据结构与算法”课程学习总结报告》 在学习“数据结构与算法”这门课程时,我们深入了解了线性结构、树结构和图结构中的数据表示与处理方法。这些知识是计算机科学中的基石,对于高效编程和优化至关重要。课程...

    数据结构与算法java—作者:周鹏

    《数据结构与算法Java》是由周鹏编著的一本深入探讨数据结构与算法的书籍,主要面向Java开发者。这本书详细地介绍了数据结构和算法的基础知识,对于提升编程能力,优化程序设计有着重要的指导意义。 首先,我们要...

    数据结构(严蔚敏)第十章:内部排序

    严蔚敏教授的《数据结构》是一本经典的教材,其中第十章专门讲解了内部排序算法。内部排序,指的是数据在计算机内存中进行的排序过程,相对于外部排序,其处理的数据量相对较小,但要求快速、高效。 在这一章中,...

    希尔排序算法源代码

    希尔排序(Shell Sort)是一种基于插入排序的快速排序算法,由Donald Shell于1959年提出。它的主要思想是将待排序的...不过,理解希尔排序有助于我们更好地理解和设计其他排序算法,对计算机科学的学习有着重要的意义。

    数据结构希尔排序

    ### 数据结构之希尔排序 #### 一、希尔排序概述 希尔排序(Shell Sort)...通过对希尔排序的深入理解与实践,可以更好地掌握这种排序方法的核心思想和实现细节,为进一步学习更高级的数据结构和算法打下坚实的基础。

    C/C++数据结构_随机10000个数:排序~8大排序代码集.rar

    在IT领域,排序是计算机科学中的基础概念,尤其在数据结构和算法的学习中占据着重要地位。本资源“C/C++数据结构_随机10000个数:排序~8大排序代码集.rar”提供了C/C++实现的八种经典排序算法,适合初学者深入理解和...

    数据结构与算法书上代码总汇

    数据结构与算法是计算机科学的基础,对于理解和解决复杂问题至关重要。本书的代码总汇涵盖了这一领域的核心概念,通过C++语言实现,为学习者提供了直接可用的实例。下面,我们将详细探讨这些知识点。 1. **数组**:...

    数据结构_C语言_严蔚敏_排序

    严蔚敏教授和吴伟民教授的《数据结构》教材是一本经典之作,它详细介绍了各种数据结构及其算法。排序是数据结构中的基础操作,广泛应用于各种计算问题,如数据库管理、数据分析、计算机图形学等领域。 以下是压缩包...

    数据结构 课程设计 排序算法的比较

    2. 希尔排序:基于插入排序的改进算法,通过设置间隔序列(希尔增量)来减少元素交换的次数,从而提高了效率。希尔排序的时间复杂度在最坏情况下可以达到O(n^1.3),优于直接插入排序。 3. 冒泡排序:通过相邻元素的...

    排序算法: 冒泡排序,桶排序,计数排序,堆排序,插入排序,合并排序,快速排序,基数排序,选择排序,希尔排序 实现语言: Vue

    10. **希尔排序**:希尔排序是对插入排序的改进,通过设置间隔序列来减少元素的移动次数。其时间复杂度取决于间隔序列的选择,一般认为是O(n^(3/2))。 在Vue.js中实现这些排序算法,可以帮助开发者更好地理解算法...

    2018JAVA经典教程:数据结构与算法经典问题解析-Java语言描述

    通过阅读《2018JAVA经典教程:数据结构与算法经典问题解析》,读者不仅可以了解上述概念,还能学习到如何在实际Java程序中应用这些数据结构和算法,提升编程能力,为解决复杂问题打下坚实基础。

    数据结构内部排序算法(c语言版)

    本项目聚焦于四种经典的内部排序算法,它们分别是:直接插入排序、希尔排序、冒泡排序和快速排序。下面将对这些排序算法进行详细介绍。 1. **直接插入排序**: 直接插入排序是一种简单的排序算法,其基本思想是将...

    数据结构与算法分析:C语言描述(第2版)+ 数据结构与算法分析 C++描述 (第3版)

    数据结构与算法分析是计算机科学中的核心课程,它探讨如何有效地组织和操作数据,以及设计和分析解决问题的算法。这两本书——"数据结构与算法分析:C语言描述(第2版)”和“数据结构与算法分析 C++描述 (第3版)”...

    数据结构与算法学习辅导及习题详解.张乃孝版

    《数据结构与算法学习辅导及习题详解》是张乃孝教授编写的一本经典教材,主要针对计算机科学和技术领域的学生和专业人士,旨在帮助他们深入理解数据结构和算法的基础知识。这本书详细介绍了各种常用的数据结构,如数...

    VC++2012编程演练数据结构《33》希尔排序

    综上所述,希尔排序是C++编程中学习数据结构和算法的一个重要实践,它结合了C++语言基础、数组操作、函数调用以及特定的排序算法。通过VC++2012的开发环境,可以方便地编写、编译和测试这种算法,提升编程技能。

    C,C++数据结构与算法速用速学大辞典代码

    《C,C++数据结构与算法速用速学大辞典代码》这本书是为学习C和C++编程语言,特别是关注数据结构与算法的初学者和开发者提供的宝贵资源。书中包含了大量的实例代码,旨在帮助读者快速理解和应用这些关键概念。 在C...

Global site tag (gtag.js) - Google Analytics