Python 示例 --- 排序冒泡法

第一种思路

# Bubble Sorting
# Version 1

num_list = [4, 5, 1, 2, 9, 6, 8, 7, 3]

print(num_list)

length = len(num_list)    # the number of the num_list
count_swap = 0
count = 0

for i in range(length):
    Flag = False
    
    for j in range(length-i-1):
        count += 1
        
        if num_list[j] > num_list[j+1]:
            temp = num_list[j+1]
            num_list[j+1] = num_list[j]
            num_list[j] = temp
            Flag = True
            count_swap += 1

print(num_list)
print(count, count_swap)
[4, 5, 1, 2, 9, 6, 8, 7, 3]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
36 14

第二种思路

# Bubble Sorting
# Version 2
# Improved Version

num_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]

print(num_list)

length = len(num_list)    # the number of the num_list
count_swap = 0
count = 0

for i in range(length):
    Flag = False
    
    for j in range(length-i-1):
        count += 1
        
        if num_list[j] > num_list[j+1]:
            temp = num_list[j+1]
            num_list[j+1] = num_list[j]
            num_list[j] = temp
            Flag = True
            count_swap += 1
            
    if not Flag:
        break

print(num_list)
print(count, count_swap)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
8 0

第二种思路的优势,减少不必要的算法

# Bubble Sorting
# Version 1

num_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]

print(num_list)

length = len(num_list)    # the number of the num_list
count_swap = 0
count = 0

for i in range(length):
    Flag = False
    
    for j in range(length-i-1):
        count += 1
        
        if num_list[j] > num_list[j+1]:
            temp = num_list[j+1]
            num_list[j+1] = num_list[j]
            num_list[j] = temp
            Flag = True
            count_swap += 1

print(num_list)
print(count, count_swap)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
36 0
发布了158 篇原创文章 · 获赞 7 · 访问量 9730

猜你喜欢

转载自blog.csdn.net/weixin_44983653/article/details/104126102