`
kekemiaomiao
  • 浏览: 8393 次
  • 性别: Icon_minigender_2
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

数据结构--希尔排序 java

阅读更多
希尔排序思想:设置增量d1,所有距离d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;
然后取第二个增量d2<d1重复上述的分组和排序,直至所取的增量dt=1

从插入排序发展而来,插入排序相当于希尔排序的增量为1的特殊情况

java代码实现:
  public class ShellSort {
    public static void shellSort(int[] a ,int[] d){
    int i,j,k,m,temp,span;
    int n =a.length;
    int L = d.length;
    for(m=0;m<L;m++){//大的循环做L趟
    span=d[m];
    for(k=0;k<span;k++){//每趟循环都对“各个小组”进行排序
    for(i=k;i<n-span;i+=span){
    temp = a[i+span];
    j=i;
    while(j>=k&&temp<a[j]){
    a[j+span]=a[j];
    j=j-span;
   
    }
    a[j+span]=temp;
    }
   
    }
   
    }
    }
public static void main(String[] args) {
// TODO Auto-generated method stub
int a[] = {-1,4,1,-3,3,5,7,9,8,2,4,6,8,0};//?测试用例
int d[] = {5,3,1};
shellSort(a,d);
for(int i=0;i<a.length;i++){
System.out.print(a[i]+",");
}
}

}
分享到:
评论

相关推荐

    多线程排序---希尔排序、快速排序、堆排序

    可以使用`synchronized`关键字来控制对共享数据的访问,或者使用线程安全的数据结构,如`ConcurrentSkipListMap`,来减少同步开销。此外,合理地划分任务和负载均衡也是优化多线程排序性能的关键。 总结来说,这个...

    Java语言编写的数据结构-排序

    本主题将深入探讨Java语言实现的六种常见排序算法:冒泡排序、选择排序、插入排序、希尔排序、快速排序以及堆排序。 首先,冒泡排序是一种简单直观的排序算法。它通过不断交换相邻的逆序元素,使得每一轮遍历后,...

    数据结构java版 排序算法

    【数据结构与排序算法在Java中的应用】 在计算机科学中,数据结构是组织和存储数据的方式,而排序算法则是对这些数据进行排列的策略。在Java编程中,掌握各种排序算法对于提高程序效率至关重要。本篇文章将深入探讨...

    JAVA数据结构-JAVA基础知识

    ### JAVA数据结构与基础知识详解 #### 一、Java与面向对象程序设计 Java是一种广泛使用的高级编程语言,其核心特点之一就是支持面向对象编程(OOP)。面向对象编程通过将数据和行为封装在对象中来简化软件开发和...

    Java 希尔排序 算法 数据结构 数组 输出

    Java 希尔排序 算法 数据结构 数组 输出

    java数据结构大作业,排序算法是性能比较

    在Java数据结构的学习中,排序算法的性能比较是一项重要的实践任务。这个大作业的主要目标是对多种排序算法,包括直接插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序和归并排序,进行性能分析。下面...

    java实现数据结构常见排序算法及详解

    ### Java 实现数据结构常见排序算法及详解 #### 排序算法概述 排序算法是计算机科学中的基础概念之一,主要用于将一系列数据按照特定规则进行排列。根据数据处理方式的不同,排序算法大致分为两大类:比较排序与非...

    数据结构排序总结及java实现

    ### 数据结构排序总结及Java实现 #### 排序概述 排序是计算机科学中一项重要的基础技术,用于将一组数据按照特定顺序(升序或降序)进行排列。本篇文章将介绍几种常见的排序算法,并提供相应的Java实现代码。这些...

    java数据结构与算法.pdf

    Java作为广泛应用的编程语言,其在实现数据结构和算法时有着丰富的库支持和优秀的可读性。下面将对标题和描述中提到的一些关键知识点进行详细解释。 1. **数据结构**: - **稀疏数组**:当大量数据中大部分为零或...

    面试笔试必用-必须掌握的Java排序算法

    - **堆排序**:利用堆这种数据结构实现排序,分为建堆和调整堆的过程。空间复杂度为O(1),但不是稳定的排序算法。 4. **归并排序**:将数组分为两半,分别排序,然后合并两个已排序的子数组。时间复杂度为O(nlogn)...

    JAVA数据结构排序动态演示

    在编程领域,特别是Java开发中,数据结构和排序算法是至关重要的基础知识。这些算法和数据结构的高效使用直接影响到程序的性能和可读性。在这个"JAVA数据结构排序动态演示"项目中,开发者通过实现一系列经典的排序...

    快速排序、归并排序、希尔排序、冒泡排序、选择排序等8中排序方式原理分析java实现

    这里我们将深入探讨快速排序、归并排序、希尔排序、冒泡排序、选择排序以及插入排序这六种经典的排序算法,并通过Java语言来实现它们。 1. **快速排序**:由C.A.R. Hoare在1960年提出,是基于分治策略的一种高效...

    java版冒泡排序,插入排序,堆排序,快速排序,归并排序,希尔排序,桶排序

    在编程领域,排序算法是数据结构与算法学习中的基础部分,它们用于整理无序的数据序列。以下是关于Java实现的七种排序算法的详细说明: 1. **冒泡排序(Bubble Sort)**: 冒泡排序是一种简单的排序算法,通过不断...

    数据结构 各种排序算法 java图形界面实现与时间性能测试

    在IT领域,数据结构与算法是编程基础的重要组成部分,尤其对于优化程序性能至关重要。本项目主要关注各种排序算法的Java实现,并通过图形用户界面(GUI)进行演示与时间性能测试。下面将详细介绍这些排序算法及其...

    希尔排序

    `ShellSort.java` 文件可能是实现希尔排序的Java代码示例。在该文件中,可以看到以下关键部分: - 定义间隔序列:这通常通过定义一个方法来实现,根据所选的序列生成一系列间隔。 - 插入排序:希尔排序的核心是插入...

    数据结构Java排序PPT学习教案.pptx

    数据结构和排序是计算机科学中的基础且重要的主题,特别是在Java编程中。排序是将一组数据按照特定规则(如升序或降序)排列的过程。在Java中,有多种不同的排序算法,每种都有其特点和适用场景。 1. **内部排序与...

    数据结构中的八种排序算法

    在给定的标题“数据结构中的八种排序算法”和描述中,提到了八种经典的排序算法,它们在严蔚敏老师的《数据结构》一书中被广泛讨论,并提供了Java实现。这八种排序算法包括二分插入排序、折半插入排序、冒泡排序、...

    数据结构课程实验--排序

    数据结构是计算机科学中的核心课程,它探讨了如何有效地存储和组织数据,以便进行高效的查询、插入和删除操作。在本实验中,我们将重点关注排序,这是数据处理中的基础且关键的操作。排序能将无序的数据排列成有序的...

    JAVA排序算法: 直接插入,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序

    本文将深入探讨Java编程语言中实现的七种主要排序算法:直接插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序以及归并排序。每种算法都有其独特性,适用于不同的场景和数据特性。 1. **直接插入排序**:...

Global site tag (gtag.js) - Google Analytics