回顾篇之Java的插入排序

       前一段时间看到了一片文章《为什么我们要像驯化小狗狗一样驯化算法》,就一直在想我是否需要重头开始做一遍Java的基本算法排序,无论自己现在水平几何,都要回顾这些经典的,值得回味的程序片段。

       那么接下来我们就一睹为快了,看看你是否已经忘记了她,还是她依然活在你深深的脑海里。

package com.honzh.mwq.sort;

/**
 * 插入排序(原则就是当前位置的数和前面位置的数进行比较,如果当前位置的数小于之前的数,则交换位置).
 * 
 * @author qinge
 * 
 */
public class Inserting {

	public static void main(String[] args) {
		// 数组元
		int[] orgins = { 2, 1, 5, 4, 9, 8, 6, 7, 10, 3, 3 };
		
		// 排序前的数
		for (int num : orgins) {
			System.out.print(num + "、");
		}
		System.out.println();

		// 从第二个位置开始,因为第一个位置和他前面的位置(0个位置)相比,肯定为最小
		for (int index = 1; index < orgins.length; index++) { // 复杂度为数组元的长度,或者说n
			// 当前数
			int curValue = orgins[index];

			// 前一位的下标
			int preIndex = index - 1;

			// 当前数和前一位数相比,如果小,则交换位置,当前数继续和前一位数的前一位相比
			while (preIndex >= 0 && curValue < orgins[preIndex]) {// 复杂度为1+2+3+...+(n-1)
				// 前一位数的下一位等于前一位的数
				orgins[preIndex + 1] = orgins[preIndex];

				// 前一位的数等于当前数
				orgins[preIndex] = curValue;

				// 继续(前一位的前一位)
				preIndex = preIndex - 1;
			}
		}

		// 排序后的数
		for (int num : orgins) {
			System.out.print(num + "、");
		}
	}

}

 

看完感觉怎么样,你是否想起了她?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值