package com.tw.ds.highsort;
/**
*
* <p>
* 算法学习---高级排序
* 希尔排序算法
* 基本思想: 先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。
* 所有距离为dl的倍数的记录放在同一个组中。
* 先在各组内进行直接插人排序;然后,取第二个增量d2<d1重复上述的分组和排序,
* 直至所取的增量dt=1(dt<dt-l<…<d2<d1),即所有记录放在同一组中进行直接插入排序为止。
* 该方法实质上是一种分组插入方法。
* </p>
* @author tangw 2010-11-26
*
*/
public class ShellSortMain {
/**
* @param args
*/
public static void main(String[] args) {
//数据变量
int [] ardata = {2,5,1,6,8,0,9,100,2};
//排序
shellSort(ardata);
//输出
for(int i=0;i<ardata.length;i++){
System.out.println("i="+i+" v="+ardata[i]);
}
}
/**
* <p>希尔排序方法</p>
* @param data
*/
public static void shellSort(int []data){//递减
int j;
for(int count=data.length/2;count>0;count/=2){
for(int y=count;y<data.length;y++){
int temp = data[y];
for(j=y;j>=count && temp>data[j-count];j-=count){
data[j] = data[j-count];
}
data[j] = temp;
}
}
}//end method shellSort
}
/**
* 排序前数据:2,5,1,6,8,0,9,100,2
* 排序后数据: 100,9,8,6,5,2,2,1,0
*
*
* */
分享到:
相关推荐
4. 希尔排序(Shell Sort):希尔排序是插入排序的一种优化版本,通过间隔序列(也称为增量序列)减少元素间的比较距离,从而提高效率。其平均时间复杂度介于O(n)到O(n^2)之间。 5. 快速排序(Quick Sort):快速...
该资源是一个入门级别的C++算法练习,旨在帮助读者学习和理解希尔排序算法。文档中包含了希尔排序的基本原理和实现方法,并提供了详细的代码示例和解析。 通过学习和完成这个练习,读者将能够掌握希尔排序算法的...
希尔排序(Shell Sort)是一种基于插入排序的快速排序算法,由Donald Shell于1959年提出。它的主要思想是将待排序的...不过,理解希尔排序有助于我们更好地理解和设计其他排序算法,对计算机科学的学习有着重要的意义。
Java代码-排序-直接插入排序、希尔排序、直接选择排序、冒泡排序、堆排序、快速排序、归并排序中部分排序以及算法-贪心法,大家可以将源码下载下来进行学习,附带着注释和解释,有不理解的可以找博主一起探讨,共同...
希尔排序(Shell Sort)是一种基于插入排序的快速排序方法,由Donald Shell于1959年提出。它的主要思想是将待排序的数据按照一定的间隔进行分组,然后对每组...对于学习和理解排序算法,希尔排序是不可或缺的一部分。
本主题将详细探讨希尔排序、冒泡排序、堆排序等经典的排序算法,这些都是数据结构与算法学习中的核心内容,尤其对于北邮数据结构课程来说,理解并掌握这些排序方法至关重要。 1. **插入排序**: 插入排序是一种...
本文将深入探讨C#中常见的四种排序算法:冒泡排序、选择排序、插入排序和希尔排序,以及它们的实现细节和应用场合。 首先,我们来看**冒泡排序**。冒泡排序是一种简单的交换排序方法,它通过不断比较相邻元素并交换...
此外,它也是其他更复杂排序算法如希尔排序的基础。 六、优缺点 优点: 1. 算法简单,易于理解和实现。 2. 在数据部分有序的情况下,效率较高。 3. 是稳定的排序算法,不会改变相等元素的相对顺序。 缺点: 1. ...
这里我们将深入探讨四种常见的排序算法:基数排序、堆排序、希尔排序和直接插入排序。 首先,基数排序是一种非比较型整数排序算法,它的基本思想是将整数按位数切割成不同的数字,然后按每个位数分别比较。基数排序...
快速排序、堆排序、归并排序和希尔排序是四种经典的排序算法,它们在计算机科学中有着广泛的应用。这里我们将深入探讨这些排序算法的原理、实现方式以及它们在C++编程中的应用。 **快速排序(Quick Sort)** 快速...
本篇将详细探讨快速排序、希尔排序和归并排序这三种在C语言中常见的排序算法。 首先,我们来看快速排序(Quick Sort)。快速排序由C.A.R. Hoare在1960年提出,其基本思想是分治法。它的核心是选择一个基准元素,...
在`php_leetcode题解之希尔排序`这个压缩包中,可能包含了一个或多个PHP文件,每个文件都是对希尔排序算法的一种实现。这些文件可能包括了以下内容: - 对希尔排序算法的详细解释和伪代码。 - PHP函数实现希尔排序...
### C语言实现希尔排序 希尔排序(Shell Sort)是由Donald Shell于1959年提出的一种排序算法,它是对直接插入排序的...在学习和实践中,理解希尔排序的原理和掌握其实现方法对于深入理解排序算法的优化具有重要意义。
3. **其他可能包含的排序算法**:除了快速排序和堆排序,这个资源可能还包含了其他的排序算法,如冒泡排序、插入排序、选择排序、归并排序、希尔排序、计数排序、桶排序、基数排序等。这些算法各有特点,适用于不同...
"C语言学习之排序数据结构链表堆排序希尔排序快速排序递归排序" 本资源主要介绍了C语言中的排序算法,包括链表、堆排序、希尔排序、快速排序和递归排序等五种方法。同时,文章还提供了每种排序方法的原理、流程图和...
- 课件中提供了多种排序算法的C语言实现,包括插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序(包括Hoare版本、挖坑法、前后指针法)、归并排序(递归和非递归实现)以及计数排序。这些实现可以作为...
希尔排序的时间复杂度通常比冒泡排序和插入排序要好,但不如更高级的排序算法如快速排序,其平均时间复杂度介于O(n)到O(n^2)之间,具体取决于选择的增量序列。 **快速排序(Quick Sort)** 虽然标题中没有提及,但...
本实验旨在通过实际操作加深对数据结构中两种重要算法——希尔排序和折半查找的理解。实验的主要目的是: 1. **掌握顺序表的查找方法**,特别是折半查找方法。 2. **深入理解并掌握常见内部排序方法**,特别是希尔...
### 数据结构之希尔排序 #### 一、希尔排序概述 希尔排序(Shell Sort)...通过对希尔排序的深入理解与实践,可以更好地掌握这种排序方法的核心思想和实现细节,为进一步学习更高级的数据结构和算法打下坚实的基础。
本实验涉及了六种常见的排序算法:泡泡排序、直接插入排序、折半插入排序、希尔排序、直接选择排序,并且对每种排序算法进行了性能分析,包括统计执行时间、比较次数和交换次数。这些数据被保存在TXT文件中,便于...