知识大全 Shell排序

Posted 步长

篇首语:惜时专心苦读是做学问的一个好方法。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Shell排序相关的知识,希望对你有一定的参考价值。

排序算法(Java实现):Shell排序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  希尔排序 也称递减增量排序算法 是插入排序的一种高速而稳定的改进版本

  希尔排序是基于插入排序的以下两点性质而提出改进方法的

  插入排序在对几乎已经排好序的数据操作时 效率高 即可以达到线性排序的效率但插入排序一般来说是低效的 因为插入排序每次只能将数据移动一位步长的选择是希尔排序的重要部分 只要最终步长为 任何步长序列都可以工作 算法最开始以一定的步长进行排序 然后会继续以一定步长进行排序 最终算法以步长为 进行排序 当步长为 时 算法变为插入排序 这就保证了数据一定会被排序 一直较好的增量序列是 ^k ^(k ) 这样可使Shell排序时间复杂度达到O(N^ ) 为了方便扩展 先引入一个抽象的基础类 view plainpackage andyidea algorithms;

  /** * 排序抽象基础类 * @author Andy Chen * * @param <T> */public abstract class Sorter<T extends Comparable<T>>

  public abstract void sort(T[] array int from int len);

  public final void sort(T[] array)        sort(array array length);   

  protected final void swap(T[] array int from int to)        T tmp = array[from];        array[from] = array[to];        array[to] = tmp;   

  希尔(Shell)排序算法源码如下 view plainpackage andyidea algorithms;

  /** * 希尔(Shell)排序算法 * @author Administrator * * @param <T> */public class ShellSort<T extends Comparable<T>> extends Sorter<T>

  @Override    public void sort(T[] array int from int len)         int value = ;        while((value+ )* < len)            value = (value+ )* ;       

  for(int delta=value;delta<= ;delta=(delta+ )/ )            for(int i= ;i<delta;i++)                invokeInsertionSort(array from len delta);                       

  private final void invokeInsertionSort(T[] array int from int len int delta)        if(len<= )            return;         T tmp=null;         for(int i=from+delta;i<from+len;i+=delta)                      tmp=array[i];             int j=i;             for(;j>from;j =delta)                              if(pareTo(array[j delta])< )                                      array[j]=array[j delta];                                  else break;                          array[j]=tmp;            

cha138/Article/program/Java/hx/201311/26576

相关参考

知识大全 数据结构考研分类复习真题 第十章 排序[33]

  .关键码序列(QHCYQAMSRDFX)要按照关键码值递增的次序进行排序若采用初始步长为的Shell排序法则一趟扫描的结果是_____;若采用以第一个元素为分界元素的快速排序法则扫描一趟的结果是_

知识大全 一个不错的shell 脚本教程 入门级

建立一个脚本  Linux中有好多中不同的shell但是通常我们使用bash(bourneagainshell)进行shell编程因为bash是免费的并且很容易使用所以在本文中笔者所提供的脚本都是使用

知识大全 Shell.Application对象使用

Shell.Application对象使用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  创建S

知识大全 Java执行Shell&Command

Java执行Shell&Command  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  主要使用R

知识大全 启动Java应用的Shell脚本

启动Java应用的Shell脚本  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  对于Java应用

知识大全 两个很详细的shell 实例代码

两个很详细的shell实例一般编程步骤  现在我们来讨论编写一个脚本的一般步骤任何优秀的脚本都应该具有帮助和输入参数并且写一个伪脚本(frameworksh)该脚本包含了大多数脚本都需要的框架结构是一

知识大全 在Shell中打开Server Socket

在Shell中打开ServerSocket  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  工作中

知识大全 解析php中如何直接执行SHELL

解析php中如何直接执行SHELL  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!本篇文章是对php

知识大全 shell grep 查找进程的小技巧

大部分人在写Shell过滤进程的时候都会使用grep在psaux的输出结果中查找指定的进程但此时也会把grep进程也显示出来比如查找pptpd进程会匹配出来两条  复制代码代码如下:  [root@s

知识大全 防止同一个Java应用重复启动的shell脚本

防止同一个Java应用重复启动的shell脚本  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  通