冒泡排序
冒泡排序的主要原理是两两比较,将较大者放在靠后的位置,用此种方法,将最大的值一点一点推到数列的后端。因此,对于一个长为n的数组,经过n-1遍冒泡,一定能将数组排序。
时间复杂度:设T(n)为对长度为n的待排序列进行排序的时间。
则比较次数为:n-1 + n-2 + ... + 1 = (n-1) * n / 2 = O(n^2) 而且,无论数组排序状况如何,都要进行这么多次的比较
交换次数:最理想的情况下,只用对数组进行比较,不用进行排序。
最坏情况下,数组为倒序排列,则需要进行 (n-1) * n /2 = O(n^2) 次交换
class Solution:
def bubble_sort(self, nums):
lens = len(nums)
for i in range(lens - 1):
for j in range(lens - i - 1):
if nums[j] > nums[j + 1]:
nums[j], nums[j + 1] = nums[j + 1], nums[j]
print(nums)
return(nums)
if __name__ == "__main__":
sol = Solution()
res = sol.bubble_sort([9,7,5,3,2,7,5,4,23,9,56,67,23,11])
print(res)
时间复杂度:设T(n)为对长度为n的待排序列进行排序的时间。
则比较次数为:n-1 + n-2 + ... + 1 = (n-1) * n / 2 = O(n^2) 而且,无论数组排序状况如何,都要进行这么多次的比较
交换次数:最理想的情况下,只用对数组进行比较,不用进行排序。
最坏情况下,数组为倒序排列,则需要进行 (n-1) * n /2 = O(n^2) 次交换