码迷,mamicode.com
首页 > 编程语言 > 详细

java 希尔排序

时间:2016-06-13 15:38:53      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:java 基础

一、希尔排序规则

  1. 计算出最大增量,公式h = 3h+1

  2. 以h为起始点,-h的增量进行插入排序

  3. 反向计算出下一个增量 h = (h-1)/3

  4. 重复第二步操作

  5. 注:最终都会以1为增量的排序,前面四步是为了减少以1为增量的排序次数

二、代码实例

public class ShellSort

{


public static void main(String[] args)

{

long[] testArr = new long[]{ 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };

long tempLong; // 被排序数据临时变量

int tempInt; // 插入位置的临时变量

int h = 1; //增量

//1.计算出最大增量,公式h = 3h+1

while(h <= testArr.length/3)

h = h*3 + 1;

// 增量h的插入排序

while(h > 0)

{

//2.以h为起始点,-h的增量进行插入排序

for(int i = h;i < testArr.length;i++)

{

tempLong = testArr[i];

tempInt = i;

while(tempInt > h - 1 && testArr[tempInt - h] >= tempLong)

{

testArr[tempInt] = testArr[tempInt - h];

tempInt -= h;

}

testArr[tempInt] = tempLong;

}

// 3.反向计算出下一个增量

h = (h-1)/3;

}

// 打印排序后的数据

for (int i = 0; i < testArr.length; i++)

System.out.println(testArr[i]);

}


}


java 希尔排序

标签:java 基础

原文地址:http://881206524.blog.51cto.com/10315134/1788634

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!