插入排序实例

思路:

将数组中的数据进行比较,第一次循环将第一个数据和第二个数据进行比较,如果第一个数据大于第二个数据,则将两个数据位置进行交换,否则位置不变,此时生成的新数组第一个位置和第二个位置实现有序;

第二次循环先将第二个数据和第三个数据进行比较,如果第二个数据大于第三个数据,则将两个数据进行交换,生成新的数组,此时第二个位置数据和第三个位置数据实现有序;然后再将第一个数据和第二个数据进行比较,如果第一个数据大于第二个数据,再次进行交换,从而实现第一到第三位置有序,依次类推。

图解:

 

代码:

public static void main(String[] args) {
		
		int[] arr = {4,2,9,7,0,5,1,5,6};
		
		//外层循环,循环整个数组
		for(int i = 1; i < arr.length; i++) {		//循环从1开始,因为0位置不需要进行比较
			
			/*
			 * 第二层循环将位置在下标从0[j]开始和下标为1[j+1]的值开始比较
			 * 如果0[j]位置值大于1[j+1]位置的值则调换位置,否则继续循环
			 * j--:举例,例如外层循环从1开始,内层循环j=i-1=0,就是从数组第一个值开始,如果arr[0]>arr[j+1],现在j+1就是1
			 * 如果0位置大于1位置的值则换位,从而实现0位置和1位置有序,然后j--值为-1,不满足条件则结束,进入第一层循环的i++
			 * 再到第二层循环,现在i=2,j=i-1=1,如果arr[j]>arr[j+1](arr[1]>arr[2]),相同的,如果1位置的值大于2位置的值
			 * 就交换两个值的位置,实现1和2位置的有序,然后j--是0,再对比0和1位置的值,再继续排序,最后j--是-1,二层循环结束
			 * 依次类推,直到整个数组有序
			 */
			for(int j = i - 1; j >=0 && arr[j] > arr[j + 1]; j--) {
				swap(arr,j,j+1);
			}
		}
		
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i]);
		}
		
		
	}
	
	//换位
	public static void swap(int arr[],int i,int j) {
		int tmp = arr[i];
		arr[i] = arr[j];
		arr[j] = tmp;
	}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值