java插入法排序学习笔记

本文详细介绍了一种简单直观的排序算法——插入排序。该算法通过逐步构建已排序部分,并将未排序的元素逐一插入到合适位置来实现排序。文章通过具体的伪代码展示了插入排序的过程,包括如何比较和移动元素。

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

/**
	 * 算法思想:从数组的第二位开始逐个将之后的元素插入数组之中,
	 * 整个过程保证插入新数据之前,已有的数组是排好序的。
	 * 每次插入新数据时,将新数据与已有数组最后一个元素比较,
	 * 如果新数据较小,将已有的数组中进行比较的这个数据后移一位,
	 * 再将新数据与已有数组的前一位比较,如果还是新数据较小,
	 * 再将进行比较的数据后移一位,直到找到新数据的位置,将新数据赋值给这一位。
	 * 最后一个数据插入数组后排序完成。
	 */
	static void sort(int[] arr){
		for (int i = 1; i < arr.length; i++) {
			//如果新元素小于已有数据的最大值,那么移动数据时会覆盖arr[i],所以定义临时变量保存arr[i]
			int temp = arr[i];
			int j;//在内层循环之外定义循环变量是为了在循环结束后,将新插入的数据赋值给找到的位置
			/*
			 * 从新数据的前一位开始,依次与新数据比较,如果大于新数据,该数据后移一位。
			 * 由于原数据是有序的,所以第一个小于新数据的位置的后一位就是新数据应该插入的位置。
			 * 如果没有小于新数据的数据,j=-1时退出循环,新数据插在第一位,也能保证插入正确。
			 */
			for (j = i - 1; j >= 0 && arr[j] > temp; j--) {
				arr[j+1] = arr[j];
			}
			arr[j+1] = temp;
		}
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值