冒泡排序
想法: 让一个数字和它相邻的下一个数字进行比较运算 如果前一个数字大于后一个数字,交换两个数据的位置。
例如:给定一个数组:nums = [6, 5, 3, 1, 8, 7, 2, 4]
输出为:nums=[1, 2, 3, 4, 5, 6, 7, 8]
(未优化)代码:
nums = [6, 5, 3, 1, 8, 7, 2, 4]
j = 0
while j < len(nums) - 1:
i = 0
while i < len(nums) - 1:
if nums[i] > nums[i + 1]:
nums[i], nums[i + 1] = nums[i + 1], nums[i]
i += 1
j += 1
print(nums)
解析:
-
代码中用了两处循环:
i代表两个数的比较,n个数需要比较n-1次,因此i<len(nums)-1,
j代表比较的趟数,n个数需要比较n-1趟,因此j<len(nums)-1
python中交换数组元素:nums[i], nums[i + 1] = nums[i + 1], nums[i]
(优化)代码:
nums = [6, 5, 3, 1, 8, 7, 2, 4]
j = 0
while j < len(nums) - 1:
flag = True
i = 0
while i < len(nums) - 1 - j:
if nums[i] > nums[i + 1]:
flag = False
nums[i], nums[i + 1] = nums[i + 1], nums[i]
i += 1
if f