韩翔给蓝儿发去了一条信息,不一会儿,他的手机便传来手机信息声。
“翔,我也爱你!元宵节快乐!”韩翔看着微信上蓝儿跳动着的头像,内心满是欢喜。
韩翔轻点蓝儿的头像,读完信息后,脸上洋溢着幸福的笑容。
随后,他打开电脑,开始复习起计算机科学与技术专业的课程。
他看着那些数组、链表、栈和队列......。
脑子里开始梳理起数组在内存中的存储方式,如何通过索引快速访问元素,以及数组在不同编程语言中的实现方式。
他一边看着笔记,一边在纸上画着简单的示意图。
复习完数组后,他开始研究链表。
链表相较于数组更为复杂,其节点之间通过指针相连。
韩翔仔细地回顾了单链表、双链表和循环链表的结构特点和操作方法。
他在电脑上打开代码编辑器,开始编写创建链表、插入节点、删除节点等操作的代码。
在编写过程中,他遇到了指针的方向错误,导致的链表结构混乱。
在通过仔细耐心地调试,逐行检查代码逻辑,最终解决了这些问题。
这让他对链表的理解更加深刻,他深知只有通过实际的代码操作,才能真正掌握这些数据结构的精髓。
接着,韩翔将注意力转移到了栈和队列上。
栈是一种后进先出的数据结构,而队列却是先进先出。
他复习了栈在函数调用中的应用,如何利用栈来保存函数的局部变量和返回地址。
对于队列,他想到了操作系统中的进程调度,先进入就序队列的进程会先被调度执行。
在通过编写模拟栈和队列操作的程序上,来巩固自己的知识。
他设置了不同的测试数据,观察程序的输出结果是否符合预期,这一过程让他对这两种数据结构的特性有了更直观的感受。
......。
韩翔完成数据结构的复习后,又开始复习算法相关的知识。
算法是数据结构的灵魂,好的数据结构需要搭配高效的算法才能发挥最大的作用。
他从排序算法开始复习,首先是冒泡排序。
只见他紧锁眉头,回忆起冒泡排序的原理。
每一次比较相邻的两个元素,如果顺序不对就需要进行交换,这样经过多轮比较后,最大(或最小)的元素就会“浮”到数组的一端。
他在纸上写出了冒泡排序的代码实现,并且计算了其时间复杂度为o(n2)。
接着思考着如何对冒泡排序进行优化。
他设置了一个标志位来判断在一轮比较中是否发生了交换,如果没有交换就说明数组已经有序,可以提前结束排序。
然后,他复习了快速排序算法。