梅书韵 作品

第272章 复习功课(第2页)

他从排序算法开始复习,首先是冒泡排序。

只见他紧锁眉头,回忆起冒泡排序的原理。

每一次比较相邻的两个元素,如果顺序不对就需要进行交换,这样经过多轮比较后,最大(或最小)的元素就会“浮”到数组的一端。

他在纸上写出了冒泡排序的代码实现,并且计算了其时间复杂度为o(n2)。

接着思考着如何对冒泡排序进行优化。

他设置了一个标志位来判断在一轮比较中是否发生了交换,如果没有交换就说明数组已经有序,可以提前结束排序。

然后,他复习了快速排序算法。

快速排序是一种基于分析思想的高效排序算法。

在复习中,有些口渴,他起身拿着学习桌上的水杯,走到客厅里,从饮水机里接了一杯热气腾腾的水,又走进电脑跟前。

一边饮着水,一边仔细研究着分区操作的原理。

如何选择一个基准元素,将数组分为左右两部分,使得左边的元素都小于等于基准元素,右边的元素都大于等于基准元素。

他在电脑上实现了快速排序算法,并通过随机生成大量不同规模的数组进行测试,观察算法的运行时间和排序结果。

“嗯!”他发现了快速排序在平均情况下的时间复杂度为o(n log n),但在最坏情况下可能会退化为o(n2),这让他对算法的性能分析有了更深入的理解。

除了排序算法,韩翔还复习了搜索算法,如二分搜索算法。

二分搜索算法适用于有序数组,它通过不断地将搜索区间缩小一半,从而快速定位目标元素。

在复习时,韩翔不仅掌握了二分搜索算法的基本实现,还思考了一些变体情况,比如在存在重复元素的有序数组中如何找到所有目标元素的位置。

他通过编写代码来解决这些变体的问题,进一步提升了自己对搜索算法的掌握程度。

复习完数据结构和算法这些基础课程后,韩翔将目光投向了计算机组成原理。

计算机组成原理是理解计算机硬件工作机制的关键课程。