,标记待排序集合中的最后一个元素为已排序,即元素 9 标记为已排序,从待排序集合中移除该元素
1 次排序后
待排序集合:[3, 4, 0, 2, 1, 6, 5, 8, 7]
已排序集合:[9]......
...
9 次排序后
待排序集合:[0]
已排序集合:[1, 2, 3, 4, 5, 6, 7, 8, 9]
观察以上过程可知,每次排序后会有一个元素变为已排序,即有一个元素处于正确的位置上...若某一轮迭代中,待排序集合中元素遍历过程中,没有发生元素位置交换操作,则该待排序集合为有序的,排序算法结束。
算法分析
冒泡排序是一种稳定排序算法,排序过程中,如果两个元素值相等,则不交换元素位置。...对于
个元素的序列:
最坏情况下,当序列为逆序时,需要
次迭代才能结束排序过程, 每一次遍历都比较并交换待排序集合中所有元素位置,即第
次迭代,遍历的元素个数为
,所以最坏情况下,算法的交换复杂度和比较复杂度都为...;
最好情况下,当序列为已排序时,第一次迭代即可结束排序过程,第一次遍历元素个数为
次,交换次数为 0,所以最好情况下,算法的比较复杂度为
,交换复杂度为 0。