插入排序--图文演示,基于Java代码实现,附每一步的详细注释

在这里插入图片描述

1.什么是插入排序。

理解一:给定一组元素,长度大小为n,从索引为1的位置开始,每次从已经排序好的序列往前查找,找到第一个比当前元素小的元素,将当前元素插入其后。若被查找元素比当前的元素大,则被查找的元素后移。
将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。

理解二:从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)

说的再多,不如撸代码

public class Solution{
	public ArrayList<Integer> sort(int [] arr){
	// 从下标为1的元素开始选择合适的位置插入,因为下标为0的只有一个元素,默认是有序的
		for(int i=1;i<arr.length;i++{  
			int tmp=arr[i];   //记录需要插入的数据
			int j=i
			while(j>0 && tmp<arr[j-1]){  //判断当前元素前面的每一个元素,如果前面的元素大于tmp,将前面的元素后移。 
				arr[j]=arr[j-1];
				j--;       //每次移动,会空出j的位置。
			}
			if(j!=i){
				arr[j]=tmp;  //若有移动,将tmp填入到arr[j]中
			}
	}
	return arr;


}

阅读完毕,您的点赞和评论是对作者最大的支持!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值