java希尔排序算法

package com.yunix.shellSort;

import java.util.Random;

public class Sort {

	/**
	 * 希尔排序也是一种插入排序方法,实际上是一种分组插入方法
	 * 先取一个小于n的整数d1作为一个增量,把表的全部记录分成d1个组,所有
	 * 距离为d1的倍数的记录放在同一个组中,在各组内进行直接插入排序,然后
	 * ,取第二个增量d2(<d1),重复上述的分组和排序,直至所取的dt=1,即所有
	 * 记录放在同一组中进行直接插入排序为止
	 */
	public static int[] shellSort(int []R){
		
		int gap = R.length/2;
		int temp;
		while(gap>0){
			for(int i=gap;i<R.length;i++){
				temp = R[i];
				int j = i - gap;
				while(j>=0 && temp < R[j]){
					R[j+gap] = R[j];
					j = j - gap;
				}
				R[j+gap] = temp;
			}
			gap = gap/2; 
		}
		return R;
	}
	
	public static void display(int[] R){
		System.out.println();
		for(int i=0;i<R.length;i++){
			System.out.print(R[i]+" ");
		}
	}
	
	public static void main(String[] args) {
		
		final int M = 50;//定义数组大小为50
		int []R = new int[M];
		for(int i=0;i<M;i++){
			R[i] = new Random().nextInt(100);//生成100以内的随机数
		}
		display(R);
		R = shellSort(R);
		display(R);

	}

}

你可能感兴趣的:(java,算法,String,Random,Class)