基础算法之插入排序


一、前言(算法实现将采用Java语言)

算法对于程序员来说还是非常重要的,在我们平常的面试中, 算法题目都是必不可少的, 算法可以说是入职的门槛, 也是面试的加分利器。
要知道, 在大公司中, 你的学历可以达不到标准, 只要你的基础扎实, 算法逻辑够清晰, 一般都会破格录用你的。
算法将会分为几篇文章, 大概是一星期一章, 也是很久没更新博客了, 准备给大家分享些即实用面试又能加分的博文出来。  
在学习算法的过程中, 不要有太大的压力, 每个算法都有对应的逻辑, 只要理解的他的工作原理, 代码其实就只是体现的一种方式罢了。
若觉得逻辑不够清晰, 请在评论中随便践踏我!!!


 二、特性

 将一个记录插入到一个已排序的队列当中, 使整个序列在插入之后, 任然有序; 
 插入位置的确定方法是将待插入的数据与已区分中各记录的值进行比较;

三、实现方法

假如我们现在有一个数组 'numbers' ; 
int numbers[] = new int[]{2,4,8,1,0,9,6} ;
我们现在需要将数组中的数据以从小到大的方式进行排序;

逻辑思路:  在排序中, 我们需要以数组下标为1的数值, 依次向前面的数据进行比较, 直到【当前下标处-1】的位置数据小于【当前下标处】的数据。
那么, 我们的逻辑就已经完成。
   
插入排序算法较为简单, 以上就是他的工作原理步骤: 
	public static void main(String[] strs) {

		int[] numbers = new int[] { 2, 8, 1, 3, 6, 9, 0 };

		for (int i = 1; i < numbers.length; i++) {
			int j = i;
			while (j > 0 && numbers[j] < numbers[j - 1]) {
				int temp = numbers[j];
				numbers[j] = numbers[j - 1];
				numbers[j - 1] = temp;

				j--;
			}

		}

		for (int i = 0; i < numbers.length; i++) {
			System.out.print(numbers[i]+"  ");
		}
	}

四、源代码解释

我们进行了第一层for循环 , 目的是为了保证该数组的每一处下标对应的数据都能够被当前算法给作用到。
j变量是为了能够处理  若前面的几处变量都形成条件时做的下标数值比较。  因为不能够直接操作i变量, 所以通过j来实现依次向前比较。
第二层while循环是用来两个下标的数据进行替换的逻辑处理。  
j--; 的功能就是j变量的处理效果了。
while来表达的是, 如果前一处下标已经大于当前操作的下标数据了,  那么将自动退出, 证明该序列已经正确。  进行下一个i下标数据比较。
   

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值