java 希爾排序
package sort_book_datastruction;
import java.util.Arrays;
/**
* 2017/4/1
* 希爾排序:是插入排序的一種,又稱為縮小增量的插入排序或者分段排序
* 基本思想:將整個待排序序列分割成若干個待排序子序列;
* 對這些子序列分別進行排序,不斷縮小增量,構成子序列,再排序;
* 當整個序列基本有序時,再對整個序列進行一次排序。
*操作方法:
* 1)選擇一個增量序列,d={t1,t2,...tk};tk=1(增量序列的最後一項必須為1),該序列是減序列;
* 2)按增量序列的個數k,對序列進行k趟的排序
* 3)每趟排序根據對應的增量ti,對待排序列分割成長度為m的子序列,分別對各個子序列進行直接插入排序;
* @author Administrator
*
*/
public class ShellSort {
public void shellInsert(int[] array,int d){
for(int i =d;i<array.length;i++){
if(array[i]<array[i-d]){
int x = array[i];
int j = i - d;
while(j>0 && x<array[j]){
array[j+d]=array[j];
j=j-d;
}
array[j+d]=x;
}
}
}
public void shellSort(int[] array,int[] d){
for(int k =0;k<d.length;k++){
shellInsert(array,d[k]);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
ShellSort ss = new ShellSort();
int[] a={2,5,3,8,11,6,15,9,45,7,5};
int[] d ={6,3,1};
ss.shellSort(a, d);
System.out.println("a="+Arrays.toString(a));
}
}
相關文章
- Java希爾排序Java排序
- 希爾排序java實現排序Java
- 排序演算法:Java實現希爾排序排序演算法Java
- 希爾排序排序
- 希爾排序(一)排序
- 希爾排序(二)排序
- 理解希爾排序排序
- 排序演算法__希爾排序排序演算法
- 【排序演算法】- 希爾排序排序演算法
- 希爾排序——重溫排序(二)排序
- C++希爾排序C++排序
- 希爾排序(C++)排序C++
- 【筆記】希爾排序筆記排序
- 希爾排序(Shell Sort)排序
- 排序演算法之希爾排序排序演算法
- 【排序】插入類排序—(折半)插入排序、希爾排序排序
- PHP 排序演算法之希爾排序PHP排序演算法
- 【資料結構】希爾排序!!!資料結構排序
- 【資料結構】希爾排序資料結構排序
- 排序演算法總結之希爾排序排序演算法
- 排序演算法 - 快速插入排序和希爾排序排序演算法
- 第二章 :查詢與排序-------希爾排序排序
- 排序演算法(氣泡排序,選擇排序,插入排序,希爾排序)排序演算法
- rust-algorithms:14-希爾排序RustGo排序
- JavaScript希爾排序簡單介紹JavaScript排序
- #排序演算法#【2】直接插入排序、希爾排序排序演算法
- 【譯】Swift演算法俱樂部-希爾排序Swift演算法排序
- 【演算法】希爾排序的實現演算法排序
- 演算法(二)初等排序前篇[插入和希爾排序]演算法排序
- 七、排序,選擇、冒泡、希爾、歸併、快速排序實現排序
- 三種插入排序 直接插入排序,折半插入排序,希爾排序排序
- python實現希爾排序演算法Python排序演算法
- C#演算法----(三)希爾排序 (轉)C#演算法排序
- 【PHP資料結構】插入類排序:簡單插入、希爾排序PHP資料結構排序
- 程式猿修仙之路--演算法之希爾排序演算法排序
- 基礎演算法系列 之希爾排序演算法排序
- javascript希爾排序演算法程式碼例項JavaScript排序演算法
- 排序演算法Python(冒泡、選擇、快速、插入、希爾、歸併排序)排序演算法Python