排序算法---希尔排序

希尔排序是一种基于插入排序的快速排序算法,通过设定不同间隔序列对数据进行预排序,逐步减少间隔直到为1,最终完成整个序列的排序。文章介绍了希尔排序的基本思想,包括按增量划分数列和对子数列进行插入排序的步骤,并给出了具体的示例及代码实现。
摘要由CSDN通过智能技术生成

  希尔排序的基本思想(划分):把待排序的数列按照一定的增量分割成多个子数列,这些子数列不是连续的,然后对每个子数列进行插入排序。接着增量逐渐减小,在减小到1后直接使用插入排序处理数列。

  希尔排序的具体例子如下(每次n/2缩小规模):

   

 


希尔排序的实现代码如下:

package com.threeTop.www;

/***
 * 希尔排序的实现
 * @author wjgs
 *
 */
public class ShellSort {
	
	private int[]array;
	
	//构造函数进行初始化
	public ShellSort(int []array)
	{
		this.array=array;
		
	}
	/***
	 * 希尔排序,每次以n/2减少规模
	 */
    public void sort()
    {
    	int temp;
    	
    	for(int k=array.length/2;k>0;k/=2)
    	{
    		for(int i=k;i<array.length;i++)
    		{
    			for(int j=i;j>=k;j-=k)//内部控制元素的交换
    			{
    				if(array[j-k]>array[j])
    				{
    				temp=array[j-k];
    				array[j-k]=array[j];
    				array[j]=temp;
    				}
    			}
    		}
    		
    	}
    	
    	
    }
	//打印输出
	public void print()
	{
		for(int i=0;i<array.length;i++)
		{
			System.out.print(array[i]+"  ");
		}
		
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int []array={5,9,1,9,5,3,7,6,1,10,4};
		ShellSort shellsort=new ShellSort(array);
		shellsort.sort();
		shellsort.print();

	}

}

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值