冒泡排序基本思想:
冒泡排序是交换排序的一种,两两比较待排序的关键字,发现两个记录的次序相反时即进行交换。
在冒泡排序的过程中,关键字小的记录好比水中的气泡逐趟向上漂浮,而关键字大的记录好比石块往下沉,每一趟有一个最大的石头沉搭到水底。
排序过程:
首先将第一个记录的关键字和第二个记录的关键字进行比较,若为逆序(即source[1].key>source[2].key),则交换两个记录。
以此类推,直到第n-1个记录和第n个记录的关键字进行比较,这个过程称作第一趟排序,其结果使得最大的记录被安置到最后一个记录的位置上。
冒泡排序效率:
若初始序列为“正序”,则只需要进行一趟排序,在排序过程中进行n-1次关键字的比较,且不移动记录;
若初始序列为“逆序”,则需要进行n-1趟排序,在排序过程中进行n(n-1)/2次关键字的比较,并做等数量级的记录移动。
因此,总的时间复杂度为O(n2), 最好时间复杂度为O(n)。