排名稳定性与实体识别算法融合带来的算法演进

十大排序算法(一)冒泡排序

冒泡排序是一种简单直观的排序算法,其核心思想是通过多次遍历数组,每次比较相邻的两个元素,如果它们的顺序错误就交换它们,直到整个数组有序。时间复杂度:O(n2)。最坏情况下,需要进行n-1次遍历,每次遍历需要比较n-i次(i为当前遍历次数),因此总比较次数为(n-1)+(n-2)+...+1=n(n-1)/2,即O(n2)。空间复杂度:O(1)。冒泡排序只需要常数级别的额外空间用于交换元素。稳定性:是稳定排序。因为在比较相邻元素时,只有当前者大于后者才会交换,所以相等元素的相对位置不会改变。第一趟遍历:从数组的第一个元素开始,依次比较相邻的两个元素,如果前一个元素大于后一个元素,则交换它们的位置。这样,第一趟遍历结束后,最大的元素会被“冒泡”到数组的最后一个位置。第二趟遍历:重复第一趟遍历的过程,但是这次不需要比较最后一个元素,因为它已经是最大的了。第二趟遍历结束后,第二大的元素会被“冒泡”到数组的倒数第二个位置。后续遍历:继续这个过程,每次遍历都比前一次少比较一个元素,直到整个数组有序。优化思路:如果在某次遍历中没有发生任何交换,说明数组已经有序,可以提前结束排序。实现方法:引入一个标志变量,记录每次遍历中是否发生了交换。如果没有交换,则提前退出循环。优点:实现简单,易于理解;对于小规模数据或基本有序的数据效率较高。缺点:对于大规模数据,效率较低,因为其时间复杂度为O(n2)。


nginx