java简单排序学习之插入排序

插入排序也是一个很重要的东西,我们通过现在我们想要插入的数和前面的比较,如果没有到最前面,或者当前的数一直大于或者一直小于(这取决于降序还是升序),那么我们就一直移动,如果找到了不符合条件的,那么就将我们需要的数插入到该下标的后一位。当然我们需要插入的数是需要提前保存的,当然,这里你可能还有点不清楚,当你看我的代码和每一步的注释应该就懂了。

package www.jk.sort;

/**
 * 
 * @author jk
 *         这段代码是实现插入排序,感觉以前总是理解不了,今天看了一下感觉也是蛮简单的啊,因为第一个数一直就在的,所以就从第二个数开始,然后找到大于或者小于它的数
 *         ,因为找到的数刚好是大于或者是小于它的,那么插入的位置就应该在它的后面的那位,所以就这样就完成插排序了啊,
 * 
 */
public class test {
	public static void main(String[] args) {
		int[] a = { 1, 8, 3, 5, 6, 2, 9 };
		insertSort(a);
		for (int i = 0; i < a.length; i++) {
			System.out.println(a[i]);
		}
	}

	public static void insertSort(int[] a) {
		// 第一层循环,我们需要启动while循环的数目,因为是插入,所以是从第二个开始的
		// firt loop,the time of while we need to launch
		for (int i = 1; i < a.length; i++) {
			// 记录当前想要插入的数
			// record the current number
			int t = a[i];
			// 当前想要插入的数的下标
			// record the index that we want to insert
			int j = i - 1;
			// 如果数组没有到最开始,或者是t一直大于a[j]的话,就一直移动
			// if the array is not in the beginning,and t>a[j],continue move
			while (j >= 0 && t > a[j]) {
				a[j + 1] = a[j];
				j--;
			}
			// 因为我们最后找到的是刚好大于目前的这个数,所以我们需要插入在它的后面
			// insert the number
			a[j + 1] = t;
		}
	}

}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值