shell排序又称为缩小增量排序,也是一种插入排序类的算法,但在时间上有较大的改进。
Shell排序的思路是:选定一个增量的d1<length,把全部记录按此值从第一个记录起进行分组,所有相距为d1的记录作为一组。现在各组内进行插入排序,然后减小间隔,取第二个增量d2<d1;重复上述分组和排序过程,直至增量值di=1为止,即所有的记录放在同一分组内。
我的算法实现如下:
import java.util.Arrays; public class ShellSort{ public int[] shellSort(int[] datas){ int length=datas.length; int d=length/2; while(d>=1){ for(int i=d;i<length;i++){ int tmp=datas[i]; int j=i-d; while(j>=0&&tmp<datas[j]){ datas[j+d]=datas[j]; j=j-d; } datas[j+d]=tmp; } d=d/2; } return datas; } public static void main(String arg[]){ int[] datas={22,34,3,4,56,11,21}; ShellSort sortObj=new ShellSort(); int[] results=sortObj.shellSort(datas); System.out.println(Arrays.toString(results)); } }
相关推荐
本篇将详细介绍标题所提及的四种排序算法:Shell排序、快速排序、归并排序以及堆排序。 1. **Shell排序**: Shell排序是一种改进的插入排序,由Donald Shell于1959年提出。它通过设置一个间隔序列,使得数组中的...
数据结构(c语言版)严蔚敏 吴伟民编著 中直接插入排序、折半排序、shell排序、冒泡排序、快速排序、选择排序、堆排序的实现、归并排序,使用c语言实现
### C++中的Shell排序算法详解 #### 一、Shell排序简介 Shell排序是插入排序的一种扩展,由Donald Shell于1959年提出。它通过将原始数组分割成多个子序列,分别对这些子序列进行插入排序来提高插入排序的效率。随着...
数据结构课程排序算法中的经典shell排序
shell排序的c语言算法 很好很强大很高效很教授的算法
总结,C语言实现冒泡Shell排序算法是将冒泡排序与Shell排序结合,先用Shell排序优化初步排序,再用冒泡排序进行微调,以达到更好的性能。理解并掌握这些基础排序算法有助于我们更好地理解和设计更复杂的排序算法。在...
**Shell排序算法详解及其在Simotion中的应用** Shell排序,由美国计算机科学家Donald Shell于1959年提出,是一种改进的插入排序算法,通过设置一个间隔序列来减少比较和交换的操作,从而提高了排序的效率。它巧妙地...
这里我们汇总了七种常见的排序算法:Shell排序、归并排序、选择排序、快速排序、堆排序、冒泡排序和插入排序。每种算法都有其独特的特点和适用场景,下面将逐一详细介绍。 1. **Shell排序**:由Donald Shell提出,...
**Shell排序**是一种插入排序的变种,由Donald Shell在1959年提出,它通过将待排序的数组元素按某个增量分组,然后对每组进行直接插入排序,随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰...
### C经典算法之Shell排序法 - 改良的插入排序 #### 描述 在计算机科学领域,排序算法一直是研究的重点之一。插入排序是一种简单的排序方法,其基本思想是从待排序序列中依次取出元素与已排序的部分进行比较并插入...
利用c语言写一个算法实现shell排序,是一个简单的程序
本文将深入探讨标题和描述中提及的几种排序算法:直接插入排序、希尔排序(SHELL排序)、冒泡排序、快速排序、简单选择排序、堆排序以及归并排序,并对它们进行分析和比较。 1. **直接插入排序**: - 直接插入排序...
这里主要介绍四种常见的排序算法:Shell排序、选择排序、快速排序以及冒泡排序。 **Shell排序**: Shell排序是一种改进的插入排序,由Donald Shell于1959年提出。它的基本思想是通过设定一个初始间隔(增量h),将...
**Shell排序**是一种基于插入排序的算法,由Donald Shell在1959年提出。它的主要特点是通过设定一个间隔序列,将待排序的数组分组,对每组使用插入排序,然后逐渐减小间隔,直到间隔为1,完成整个数组的排序。这种...
本文实例讲述了C语言基本排序算法之shell排序。分享给大家供大家参考,具体如下: shell排序是对直接插入方法的改进方法. /*-----------------------------------------------------------------------------------...
java shell代码,,测试排序时间
### 希尔排序(Shell Sort)详解 #### 一、引言 希尔排序是一种基于插入排序的高效排序算法,由计算机科学家Donald Shell在1959年提出。该算法通过将原始序列分割成多个子序列,分别进行插入排序来提高排序效率。...
Shell排序是一种改进的插入排序,由Donald Shell在1959年提出,目的是减少大规模数据排序时的比较次数。它的基本思想是通过设置一个间隔序列(Gap Sequence),将待排序的数组分成多个子序列,对每个子序列进行插入...