梅书韵 作品
第272章 复习功课(第2页)
他从排序算法开始复习,首先是冒泡排序。
只见他紧锁眉头,回忆起冒泡排序的原理。
每一次比较相邻的两个元素,如果顺序不对就需要进行交换,这样经过多轮比较后,最大(或最小)的元素就会“浮”到数组的一端。
他在纸上写出了冒泡排序的代码实现,并且计算了其时间复杂度为o(n2)。
接着思考着如何对冒泡排序进行优化。
他设置了一个标志位来判断在一轮比较中是否发生了交换,如果没有交换就说明数组已经有序,可以提前结束排序。
然后,他复习了快速排序算法。
快速排序是一种基于分析思想的高效排序算法。
在复习中,有些口渴,他起身拿着学习桌上的水杯,走到客厅里,从饮水机里接了一杯热气腾腾的水,又走进电脑跟前。
一边饮着水,一边仔细研究着分区操作的原理。
如何选择一个基准元素,将数组分为左右两部分,使得左边的元素都小于等于基准元素,右边的元素都大于等于基准元素。
他在电脑上实现了快速排序算法,并通过随机生成大量不同规模的数组进行测试,观察算法的运行时间和排序结果。
“嗯!”他发现了快速排序在平均情况下的时间复杂度为o(n log n),但在最坏情况下可能会退化为o(n2),这让他对算法的性能分析有了更深入的理解。
除了排序算法,韩翔还复习了搜索算法,如二分搜索算法。
二分搜索算法适用于有序数组,它通过不断地将搜索区间缩小一半,从而快速定位目标元素。
在复习时,韩翔不仅掌握了二分搜索算法的基本实现,还思考了一些变体情况,比如在存在重复元素的有序数组中如何找到所有目标元素的位置。
他通过编写代码来解决这些变体的问题,进一步提升了自己对搜索算法的掌握程度。
复习完数据结构和算法这些基础课程后,韩翔将目光投向了计算机组成原理。
计算机组成原理是理解计算机硬件工作机制的关键课程。