您的位置:首页 > 理论基础 > 数据结构算法

数据结构 - 冒泡排序

2018-04-01 06:57 176 查看
冒泡排序
冒泡排序的主要原理是两两比较,将较大者放在靠后的位置,用此种方法,将最大的值一点一点推到数列的后端。因此,对于一个长为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) 次交换
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: