Java基础之希尔排序
来源:互联网 发布:中序遍历的递归算法 编辑:程序博客网 时间:2024/05/01 23:29
希尔排序的基本思想是:
先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2<d1重复上述的分组和排序,直至所取的增量dt=1(dt<dt-l<…<d2<d1),即所有记录放在同一组中进行直接插入排序为止。
该方法实质上是一种分组插入方法。 给定实例的shell排序的排序过程 假设待排序文件有10个记录,其关键字分别是: 49,38,65,97,76,13,27,49,55,04。 增量序列的取值依次为: 5,3,1示例代码如下:
public class dayOf25_31 {
public static int[] shellSort(int[] array){
int d = array.length/2; //步长
int length = array.length;
int i,j;
int temp; //临时变量
while(d>0){
for(i=d;i<length;i++){
j = i-d; //每次要重新做调整
while(j>=0){
if(array[j]>array[j+d]){
temp = array[j];
array[j] = array[j+d];
array[j+d] = temp;
j = j-d; //array[j]还要和前面的做比较,如1,6,11,当6和11比较完了,换了位置的话,以前11位置的数还要和1位置的比较
}else{
j = -1;
}
}
}
d = d/2; //改变步长
}
return array;
}
public static void out(int[] ar){
int length = ar.length;
System.out.println("希尔排序后的结果为:");
for(int i=0;i<length;i++){
System.out.print(ar[i]+" ");
}
}
public static void main(String[] args){
int[] array = {5,3,8,11,10,32,23,9,15,2};
array = dayOf25_31.shellSort(array);
dayOf25_31.out(array);
}
}
- Java基础之希尔排序
- JAVA之希尔排序
- 基础算法之希尔排序
- 算法基础之----希尔排序
- 排序之希尔排序(java)
- 算法基础之排序篇-希尔排序
- 【8086汇编】基础排序之希尔排序
- 希尔排序之java实现
- 希尔排序之Java实现
- java算法之希尔排序
- Java算法之希尔排序
- Java基础篇之----排序(快速排序、冒泡排序、堆排序、简单选择排序、 希尔排序、直接插入排序)
- Java程序排序之希尔排序
- 排序算法之希尔排序(JAVA)
- Java算法排序之--希尔排序法
- Java程序排序之希尔排序
- java排序算法之希尔排序
- Java程序排序之希尔排序
- PHP网站收集
- EFM32片内外设--TFT 汉字字库
- java术语
- bd测试开发笔试题
- java高新学习笔记2
- Java基础之希尔排序
- VC++动态链接库(DLL)编程深入浅出
- 快速排序,选择排序
- 最近研究NFC的总结
- LTIB使用总结
- java例程练习(简单的计算器[调停者 设计模式 及 内部类 ])
- Java集合中的集:Set
- 2.26-用链表表示2.25的算法;
- svn使用操作