Java七武器----排序算法之插入排序

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37979178/article/details/87121570

年后上班的第二天,从目前来看的话班上自己可以用来学习的时间真的是极其有限,昨天自己整个班上的任务就是写了自己小说的第一章,白天没有写任何的代码,晚上抽空补了一部分项目的源代码(动态验证码工具类的书写)并且练习了已经淡忘的Git操作。今天一样如此,上午学习了插入排序和希尔排序,感觉自己的思维能力越来越差了,下午去现场干活,拖拖拉拉就是一下午(不足的地方就是如果把闲聊的时间利用起来可以至少挤出两个小时的时间,时间观念,学习观念淡薄),所以每周自己可以用来硬性学习的时间就是周六日两天,还有就是每天的早晨和晚上,白天的话可以挤出来的时间极度有限,而且从学习灵活度来看的话班上更好的学习方式是阅读,思考性的,代码性的东西应该更多的放在自由可支配的时间片上(早晨大概可以挤出两个小时,晚上的话三个小时),班上的话上午时间要充分利用,现场时间要充分利用,主要的学习方式就是看书籍,看博客,阅读性学习,另外每周要给自己定下三个极限,编码极限,看书极限,思考极限,周六日是学习的高潮也是实现自己每周任务的关键。

插入排序

插入排序的核心理解

插入排序是一种比较好理解的排序算法,在排序之前我们需要明确的是待插入数据左边的所有数据都是已经排好序的数组,用几句核心的话来理解插入排序就是:1. 待插入数据取出(哨兵位赋值给temp)。2. 比哨兵位数据大的后移(由于哨兵位左边是已经排好序的数列只要出现一个小于哨兵位数据,左边其他的数据便小于该位)。3. 将哨兵位的数据赋值给最后一个后移位。

代码实现

	public class ArithmeticUtil{
		public static int[] insertSort(int[] a){
			int len=a.length;
			int i,j;
			for(i=1;i<len;i++){
				int insertNum=a[i];
				j=i-1;
				while(j>=0&&a[j]>insertNum){
					a[j+1]=a[j];
					j--;
				}
				a[j+1]=insertNum;
			}
			return a;

		}

//引入第三个变量
		public static int[] insertSort2(int[] a){
			int len=a.length;
			for(int i=1;i<len;i++){
				int insertNum=a[i];
				int b=0;
				int j=i-1;
				for(;j>=0;j--){
					if(a[j]>insertNum){
						a[j+1]=a[j];
						b++;
					}
				}
				a[i-b]=insertNum;
				


			}

		}

	}

猜你喜欢

转载自blog.csdn.net/qq_37979178/article/details/87121570
今日推荐