一、冒泡排序(Bubble Sort)
1、冒泡排序是一种简单的排序方法,它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
2、冒泡排序的原理很简单:它会遍历要排序的数列,依次比较相邻的元素;如果后一个小于前一个,就交换它们的位置,这样在一次遍历后,最小的元素就在第一位;然后,再继续从第二位继续对比,交换;最终将最小值放置到最后位置,以此类推,直到遍历结束。
3、冒泡排序需要经过n-1轮大循环,每一轮又是两两比较,如果需要进行交换的话,就需要3次赋值操作;如果不需要进行交换,则只需要1次比较,所以在理想情况下,每轮的比较次数都不超过 n(n-1)/2。
1. 冒泡法排序:
冒泡法排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
2. 冒泡法排序的步骤:
(1)比较相邻的元素。如果第一个比第二个大,就交换他们两个。
(2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
(3)针对所有的元素重复以上的步骤,除了最后一个。
(4)持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
3. 冒泡法排序的核心概念:
冒泡排序的核心思想在于每次比较相邻元素顺序,如果它们的顺序不正确就进行交换。每次冒泡操作都会对相邻的两个元素进行比较,看是否满足大小关系要求,如果满足就做出交换操作,这样一直重复进行下去,每一次可以确保最大的数都会慢慢冒泡至最后,即有序序列的形成。
4. 冒泡法排序的时间复杂度:
时间复杂度计算分析:最好情况时间复杂度为O(n),即初始序列基本有序;最坏情况时间复杂度为O(n^2),即序列中元素严格逆序;平均时间复杂度为n*n/2。
5. 冒泡法排序的优缺点:
(1)实现简单:冒泡排序算法比较容易理解且实现,是学习排序算法的一个开端。
(2)稳定性:冒泡排序在排序过程中,只有相邻的两个数据项交换,所以算法是稳定的。
(3)效率:冒泡排序算法对于大小规模不定的数组排序来说,时间复杂度较高,为O(n^2), 它并不是一种高效排序算法。
缺点:理论上最好的情况时间复杂度为O(n),但实际的应用中大部分情况都是比较接近最坏情况的,而最坏情况的时间复杂度是O(n^2),而且数据移动的次数也比其他算法多,使得排序的效率比较低。