- package com.fs.common.util;
- public class shellSort {
- public static int[] a = { 10, 32, 1, 9, 5, 7, 12, 0, 4 };
- public static void main(String args[]) {
- int i;
- int index = a.length;
- ShellSort(index - 1);
- System.out.print("排序后: ");
- for (i = 0; i < index - 1; i++)
- System.out.printf("%3s ", a[i]);
- }
- public static void ShellSort(int index) {
- int temp; // 暂存变量
- int dataLength; // 分割集合的间隔长度
- int pointer; // 进行处理的位置
- dataLength = (int) index / 2; // 初始集合间隔长度
- while (dataLength != 0) {// 对各个集合进行处理
- for (int i = dataLength; i < index; i++) {
- temp = a[i]; // 暂存Data[j]的值,待交换值时用
- pointer = i - dataLength; // 计算进行处理的位置
- // 进行集合内数值的比较与交换值
- while (temp < a[pointer] && pointer >= 0 && pointer <= index) {
- a[pointer + dataLength] = a[pointer]; // 计算下一个欲进行处理的位置
- pointer = pointer - dataLength;
- if (pointer < 0 || pointer > index)
- break;
- }
- a[pointer + dataLength] = temp;
- }
- dataLength = dataLength / 2;// 计算下次分割的间隔长度
- }
- }
- }
复制代码 希尔排序(Shell Sort)是插入排序的一种。是针对直接插入排序算法的改进。该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。 |