视频字幕
冒泡排序是一种基础的排序算法。它的工作原理是重复地比较相邻的元素,如果顺序错误就交换它们。较大的元素会像气泡一样逐渐上浮到数组的末尾。虽然时间复杂度为O(n²),但它的实现简单,适合学习排序算法的基本概念。
这是Go语言实现的冒泡排序函数。函数接收一个整型切片作为参数。外层循环控制排序的趟数,最多需要n减1趟。内层循环负责比较相邻元素,如果前一个元素大于后一个就交换它们。swapped变量用于优化,如果某一趟没有发生交换,说明数组已经有序,可以提前退出。
让我们通过一个具体例子来看冒泡排序的执行过程。初始数组是64、34、25、12、22。第一趟排序中,我们依次比较相邻元素。首先比较64和34,64更大所以交换位置。然后比较64和25,继续交换。接着比较64和12,再次交换。最后比较64和22,交换后64移动到了数组末尾。第一趟排序完成,最大元素已经就位。
让我们看完整的排序过程。经过第一趟后,最大元素64已经就位。第二趟排序中,34移动到正确位置。第三趟后,25也就位了。第四趟检查发现数组已经有序,提前终止。冒泡排序的时间复杂度在最坏情况下是O(n²),但通过swapped标志的优化,最好情况下可以达到O(n)。空间复杂度为O(1),是一种原地排序算法。
总结一下,冒泡排序是一种简单直观的排序算法,Go语言的实现非常简洁。虽然时间复杂度为O(n²),但它适合小规模数据的排序,并且通过swapped标志的优化可以在最好情况下达到O(n)的性能。冒泡排序是学习排序算法基础概念的理想选择。