排序之插入排序

插入算法


循环数组,以指针数据为基值 并且记录,,通过和左侧(右侧)的循环比较,当比较值大于(小于)基值时
将大的值至后,指针继续移动,比较,置换。直到遇到小于基值,或者到数组边界时截止,并且置换至首位。
结束一次内循环,这是外循环的指针左侧的是有序。

 

 

class Sort{
	private long[] a;
	private int nElement;
	public Sort(long[] array){
		this.a = array;
	}
	
	
	public static void main(String[] args) {
		long[] array = new long[]{5,3,1,7,9,2,0};
		Sort b = new Sort(array);
		b.insertSort();
		System.out.println(b);
	}

	public void insertSort(){
		int out ,in;
		int step = 0;
		for(out = 0; out < a.length; out++){
			long temp = a[out];//记录外层循环时当前的基值
			in = out; //比较位置已外层循环指针的位置开始,指针左侧已有序。
			while(in > 0 && a[in-1] > temp){ 
				//当没有到数组边界 并且前一个值大于基值时 置换,并且将内循环指针前移,继续比较
				//前一个值,直到条件不满足时跳出
				a[in] = a[in-1];
				--in;
				step++;
			}
			// 将外层的基值至于排序中正确的位置
			a[in] = temp;
		}
		System.out.println(step);
	}
	

	public String toString(){
		StringBuilder b = new StringBuilder();
		for(long l : a){
			b.append(l);
			b.append(",");
		}
		return b.toString();
	}
}

 例:

{5,3,1,7,9,2,0}


循环,3 < 5 将大值像后置换。并且指针前移


5,5,1,7,9,2,0,


已到数组边界,将基值至于当前内循环指针位置。


3,5,1,7,9,2,0,

 

3,5,5,7,9,2,0,
3,3,5,7,9,2,0,
1,3,5,7,9,2,0,

1,3,5,7,9,9,0,
1,3,5,7,7,9,0,
1,3,5,5,7,9,0,
1,3,3,5,7,9,0,
1,2,3,5,7,9,0,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值