`
dieslrae
  • 浏览: 35379 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

高级排序:希尔排序

    博客分类:
  • Sort
 
阅读更多
    public void shellSort(int[] array){
        int limit = 1;
        int temp;
        int index;
        
        while(limit <= array.length/3){
            limit = limit * 3 + 1;
        }
        
        while(limit != 0){
            for(int i=limit;i<array.length;i++){
                temp = array[i];
                index = i;
                
                while(index > limit-1 && array[index - limit] >= temp){
                    array[index] = array[index - limit];
                    index -= limit;
                }
                array[index] = temp;
            }
            
            limit = (limit - 1)/3;
        }
    }


效率:
写法非常简单,是对插入排序的改进,也称为增量递减排序,增量的选择影响着算法的效率,没有归并排序那么高的空间复杂度,在一般的排序中都首选希尔排序,时间复杂度为:O(N*(logN)^2)
分享到:
评论

相关推荐

    C# 排序算法大全参考资料,比较清淅的一个版本。集中介绍了C#中的冒泡算法、选择排序、插入排序、希尔排序等常用算法,并包含示例代码和注意事项等。

    本文将深入探讨C#中常见的四种排序算法:冒泡排序、选择排序、插入排序和希尔排序,以及它们的实现细节和应用场合。 首先,我们来看**冒泡排序**。冒泡排序是一种简单的交换排序方法,它通过不断比较相邻元素并交换...

    六种基本排序算法,堆,归并,希尔,快速排序等

    这里我们将深入探讨六种基本的排序算法:冒泡排序、插入排序、选择排序、希尔排序、堆排序以及归并排序,这些都是快速排序算法的基础。下面,我们将逐一介绍这些算法的工作原理、效率特点及其应用场景。 1. **冒泡...

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

    希尔排序的时间复杂度通常比冒泡排序更快,但不如其他高级排序算法。 6. **直接插入排序**:直接插入排序是将每个元素与已排序的部分进行比较,找到合适位置插入。对于小规模或部分有序的数据,插入排序效率较高,...

    希尔排序java代码

    总结,希尔排序是介于简单排序与高级排序之间的一种算法,通过合理设计增量序列,可以在一定程度上提升排序速度,适合处理大数据量的排序问题。在实际编程中,根据数据特点选择合适的增量序列是优化希尔排序的关键。

    快速排序 希尔排序 插入排序 折半排序算法

    - 由于其简单性,插入排序常用于其他高级排序算法的基础。 4. **折半排序(Binary Insertion Sort)**: - 折半插入排序是插入排序的一个变体,它在插入元素时使用二分查找来确定插入位置,从而减少比较次数。 -...

    数据结构——希尔排序

    总的来说,希尔排序是一种改进的插入排序,通过增量策略优化了插入排序在处理大规模数据时的效率,适用于需要快速排序但又无法使用更高级排序算法的情况。在实际编程中,希尔排序常常作为其他复杂排序算法的备选方案...

    数据结构之希尔排序算法程序

    希尔排序由于其独特的排序方式,尤其适用于大规模数据的排序,虽然在某些情况下可能不如其他高级排序算法(如快速排序、归并排序等)效率高,但在特定条件下,如接近有序的序列,其表现往往优于其他简单排序算法。

    数据结构希尔排序

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

    排序 冒泡 插入 希尔

    希尔排序的时间复杂度通常比冒泡排序和插入排序要好,但不如更高级的排序算法如快速排序,其平均时间复杂度介于O(n)到O(n^2)之间,具体取决于选择的增量序列。 **快速排序(Quick Sort)** 虽然标题中没有提及,但...

    数据结构中排序总结:冒泡、交换、选择、插入、基数、Shell、快速、归并、堆

    5. 希尔排序:希尔排序是插入排序的改进版,通过设置不同的间隔序列(希尔增量)来分组进行插入排序,减少了元素移动的次数,提高了效率。希尔排序的时间复杂度取决于增量序列的选择,通常比O(n^2)要低,但在最坏...

    希尔排序算法

    在实际应用中,希尔排序通常用于对中等大小的数据集进行排序,因为对于小数据集,插入排序已经足够高效,而对于大数据集,更高级的排序算法如快速排序或归并排序可能会有更好的表现。希尔排序的优点在于其简单性和可...

    数据结构 各种排序算法

    希尔排序的时间复杂度通常比直接插入排序要好,但不如其他高级排序算法。 3. 快速排序(Quick Sort): 快速排序是一种高效的分治策略排序算法,由C.A.R. Hoare提出。其基本思想是选取一个基准元素,将数组分为两...

    C++常用排序法:冒泡 选择 快速 希尔……

    除了以上提到的排序算法,还有其他如归并排序、堆排序等高级排序算法,它们的时间复杂度同样为O(NlogN),但在实际应用中各有优缺点。归并排序稳定但需要额外的空间,堆排序则能在原地排序但不稳定。 在实际编程中,...

    数组与排序算法:从基础到进阶

    《数组与排序算法:从基础到进阶》是一本全面深入探讨数组基础知识和各种排序算法的实用指南。...高级技巧:探讨希尔排序、归并排序、快速排序等高级排序算法,以及它们在实际应用中的优势和局限。

    c#排序算法 冒泡,插入,希尔,选择,堆排序

    希尔排序在处理大量数据时效率较高,但相比其他高级算法如归并排序或快速排序,其复杂度分析并不直观。理解这些排序算法的原理并能灵活运用,可以显著提升程序的运行效率。在C#中,可以使用`Array.Sort()`或`List&lt;T&gt;...

    [Java算法-排序]希尔排序.java

    该资源提供了一份全面的指南,介绍了如何在Java中实现希尔排序。文档中涵盖了希尔排序的基本概念,包括如何对数组进行排序以及如何在Java中实现希尔排序。此外,文档还包括一个逐步指南,介绍如何在Java中实现希尔...

    Java常用排序算法源码

    7. 希尔排序: 希尔排序是插入排序的改进版,通过设定间隔序列来改进元素的交换过程,以减少比较和交换的次数。虽然它比直接插入排序更快,但没有固定的平均时间复杂度,且不稳定。 8. 堆排序: 堆排序基于堆这种...

    高级排序 数据结构

    在高级排序中,归并排序、堆排序、希尔排序和快速排序是四种非常重要的算法,它们各自有着独特的原理和应用。下面将详细阐述这四种排序算法。 1. **归并排序(Merge Sort)**: 归并排序是一种分治策略的典型应用。...

    算法小节(排序)6种 低级到高级

    这些算法按照复杂度从低级到高级依次为:冒泡排序、插入排序、选择排序、堆排序、希尔排序。由于提供的代码片段不完整,对于堆排序的具体实现细节无法提取,但我们将对这一算法进行概述。 ### 冒泡排序 **定义**:...

    C#中 8种初级+高级排序方法

    这里我们将探讨8种在C#中实现的初级和高级排序方法,这些方法在数据结构和算法的学习中至关重要。以下是每种排序方法的详细介绍: 1. **冒泡排序 (Bubble Sort)** 冒泡排序是最简单的排序算法之一,它通过重复遍历...

Global site tag (gtag.js) - Google Analytics