zoukankan      html  css  js  c++  java
  • 希尔排序JAVA实现

    package kpp.sort;
    /**
     * 希尔排序
     * 1.设定步长d,每隔d个元素分为一组,组内插入排序;
     * 2.d/=2,重复1步骤,直到步长为1
     * 
     * 们知道一次插入排序是稳定的,但在不同的插入排序过程中,相同的元素可能在各自的插入排序中移动,最后其稳定性就会被打乱,所以希尔排序是不稳定的。
    
      希尔排序的时间性能优于直接插入排序,原因如下:
      (1)当文件初态基本有序时直接插入排序所需的比较和移动次数均较少。
      (2)当n值较小时,n和n2的差别也较小,即直接插入排序的最好时间复杂度O(n)和最坏时间复杂度0(n2)差别不大。
      (3)在希尔排序开始时增量较大,分组较多,每组的记录数目少,故各组内直接插入较快,后来增量di逐渐缩小,分组数逐渐减少,而各组的记录数目逐渐增多,但由于已经按di-1作为距离排过序,使文件较接近于有序状态,所以新的一趟排序过程也较快。
      因此,希尔排序在效率上较直接插人排序有较大的改进。
      希尔排序的平均时间复杂度为O(nlogn)。
    
     * @author kpp
     *
     */
    public class ShellSort {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            int array[] = {49,38,65,97,176,213,227,49,78,34,12,164,11,18,1};
            shellSort(array);
            for(int k :array){
                System.out.println(k);
            }
        }
        private static int shellSort(int data[]){
            int len = data.length;
            
              
            int temp = 0;  
            for (int increment = len / 2; increment > 0; increment /= 2) {
                int j = 0;
                for (int i = increment; i < len; i++) {  
                    temp = data[i];  
                    for (j = i-increment; j >= 0; j -= increment) {  
                        if(temp < data[j]){  
                            data[j+increment] = data[j];  
                        }else{  
                            break;  
                        }  
                    }   
                    data[j+increment] = temp;  
                }  
            }  
            return 0;
        }
    }
  • 相关阅读:
    Converting PDF to Text in C#
    Working with PDF files in C# using PdfBox and IKVM
    Visualize Code with Visual Studio
    Azure Machine Learning
    Building Forms with PowerShell – Part 1 (The Form)
    ML.NET is an open source and cross-platform machine learning framework
    Microsoft Visual Studio Tools for AI
    Debugging Beyond Visual Studio – WinDbg
    Platform.Uno介绍
    Hawk-数据抓取工具
  • 原文地址:https://www.cnblogs.com/kangpp/p/4372974.html
Copyright © 2011-2022 走看看