写在最后
在结束之际,我想重申的是,学习并非如攀登险峻高峰,而是如滴水穿石般的持久累积。尤其当我们步入工作岗位之后,持之以恒的学习变得愈发不易,如同在茫茫大海中独自划舟,稍有松懈便可能被巨浪吞噬。然而,对于我们程序员而言,学习是生存之本,是我们在激烈市场竞争中立于不败之地的关键。一旦停止学习,我们便如同逆水行舟,不进则退,终将被时代的洪流所淘汰。因此,不断汲取新知识,不仅是对自己的提升,更是对自己的一份珍贵投资。让我们不断磨砺自己,与时代共同进步,书写属于我们的辉煌篇章。
需要完整版PDF学习资源私我
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
以上数组中只有一个数字0的顺序需要排列,其他数字的顺序都是对的。这种数组使用插入排序的效率更高,下面介绍此数组使用插入排序的流程。
1、先比较1和2,如果2比1小则交换位置。否则不交换位置。此数组不需要交换位置。
2、再比较2和3,如果3比2小,则交换位置。但是实际3比2大所以不交换位置,保持不变。
3、同理,3和4比较也不需要交换位置,保持不变
4、接来下,4和0比较,0小于4,所以交换位置
交换位置之后的数组如下:
5、因为3的邻居发生变化,所以3和0再次比较,0比3小,交换位置,交换之后的数组如下:
6、依次类推,0分别和2交换位置之后的数组如下:
0再和1交换位置的数组如下:
这样一个数组的顺序就对了,但是循环还没有完成,因为我们刚才仅仅循环到数字4这个位置,数字5还没有比较。
7、最后比较4和5,如果5比4小则交换位置,但是5比4大,所以位置不变。数组循环完毕,最终排序如下:
上面就是插入排序的原理。
2.2、插入排序和选择排序的区别
比如就上面这个例子而言,插入排序是将0从索引为4的位置移动到索引3、2、1、0,最终才算结束。而选择排序是找到最小的值0,直接跟1进行交换,0到1的位置,1到0的位置。大家可以翻看前面关于选择排序的介绍。
三、插入排序的代码实现
以下是java代码的实现:
/**
* 插入排序
*/
public static void algorithm5(){
//原始数组
int[] array={1,2,3,4,0,5};
//数组的长度
int length=array.length;
//对数组进行遍历
for (int i = 0; i < length; i++) {
//第二个循环仅仅是将当前数据跟自己左边的数字进行比较,如果小于左边数字则交换位置,否则位置不变。
for (int j = i; j > 0 && array[j]<array[j-1]; j--) {
int temp = 0;
temp = array[j-1];
array[j-1]=array[j];
array[j]=temp;
}
}
//将排好序的数组打印输出
for (int i = 0; i < length; i++) {
System.out.print(array[i]+",");
}
}
以上是插入排序的java代码实现,代码中的第二个for循环是重点,第二个for循环是只比较当前数据左边的值,如果比左边的值小则交换位置,否则位置不变。
3.1 插入排序的时间复杂度
插入排序的时间复杂度有两种:
一、网安学习成长路线图
网安所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、网安视频合集
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
三、精品网安学习书籍
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
四、网络安全源码合集+工具包
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
五、网络安全面试题
最后就是大家最关心的网络安全面试题板块
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!