排序算法———1.2直接插入排序二

本文介绍了一种改进的插入排序算法,并对其进行了简化。此外,还详细解析了希尔排序的基本原理及其与直接插入排序的关系,特别是针对希尔排序中的步长设置进行了深入探讨。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package algorithm;

public class InsertSortDemo01 {

	public static void main(String[] args) {
		int a[]={7,9,3,6,1};
//		insert(a);
//		out(a);
		insert1(a, 2);
		out(a);
	}
	
	
	
	public static void insert(int array[]) {
		int temp;
		int i,j;
		for(i=1;i<array.length;i++){
			temp = array[i];
			for(j=i-1;j>=0 && temp<array[j];j--){
				array[j+1]=array[j];
			}
			array[j+1]=temp;
		}
	}
	
	
	
	public static void insert1(int array[],int step) {
		int temp;
		int i,j;
		for(i=step;i<array.length;i+=step){
			temp = array[i];
			for(j=i-step;j>=0 && temp<array[j];j-=step){
				array[j+step]=array[j];
			}
			array[j+step]=temp;
		}
	}
	
	
	
	public static void out(int array[]) {
		for (int i = 0; i < array.length; i++) {
			System.out.print(array[i]);
		}
		System.out.println();
	}

}

前几天写了一个直接插入排序,今天做了一些修改,使代码更加简洁,具体可以查看insert()函数。下面对insert1()函数做一个简单的分析,因为希尔排序中也要用到直接插入排序,所以就对insert()函数进行了一些修改,增加了步长step的定义,当step=1时就是一个简单的直接插入排序。我先简单的说一下希尔排序,希尔排序是对直接插入排序的改进,第一个循环是对步长的设置,一次次减半变小,直至步长变为1,第二循环是将固定的步长将一个队列分成n各组,每一组进行一次直接插入排序。所以在insert1()中增加了步长的变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值