python排序-冒泡法

來幾個基礎的python排序

0.。用if邏輯判斷排序

a = int(input())
b = int(input())
c = int(input())
nums = []
for i in range(3):    
    nums.append(int(input('{}:'.format(i))))
if a > b and a>c:
    if b > c:
        print(a,b,c)
    else:
        print(a,c,b)
elif b>a and b>c:
    if a>c:
        print(b,a,c)
    else:
        print(b,c,a)
elif a == b:
    if a>c:
        print(a,b,c)
    else:
        print(c,a,b)
elif a>b:
        print(c,a,b)
else:
    print(c,b,a)

用if判斷雖然比較笨拙,對於數據太多並不好用,但比較鍛鍊思維邏輯能力,稍不留神就會邏輯錯誤,尤其是對於等於的邏輯判斷,更應該仔細研究。

1.。用min,max排序

nums = []
for i in range(3):    
    nums.append(int(input('{}:'.format(i))))
print(nums)
while True:
    cur = min(nums)
    print(cur)
    nums.remove(cur)
    if len(nums) == 1:
        print(nums[0])
        break

利用min,max也能實現對數據的升序,降序排列,內容也比if邏輯少了很多。

2.。直接用sort對列表排序

list1 = []
for i in range(3):
    list1.append(int(input('{}:'.format(i))))
print(list1)
list1.sort
print(list1)

3.。最基礎的冒泡排序法

num_list = [1,8,9,5,5,4,7,7,1,4]
print(num_list)
length = len(num_list)
count_swap = 0

for i in range(length):
    for j in range(length-i-1):
        if num_list[j] > num_list[j+1]:
            tmp = num_list[j]
            num_list[j] = num_list[j+1]
            num_list[j+1] = tmp
            count_swap +=1
print(num_list,count_swap)

此爲最基礎的排序法之一,原理是對兩數進行比較,然後互換位置,實現升序降序排列。

對冒泡法進行改進

num_list = [1,8,9,5,5,4,7,7,1,4]
print(num_list)
length = len(num_list)
count_swap = 0

for i in range(length):
    for j in range(length-i-1):
        flag = False
        if num_list[j] > num_list[j+1]:
            tmp = num_list[j]
            num_list[j] = num_list[j+1]
            num_list[j+1] = tmp
            flag = True
            count_swap +=1
     if not flag:
	break
print(num_list,count_swap)

這是對冒泡法的進一步改進,過濾了一些不必要的循環,提高了效率。

冒泡法算是必須具備的排序法之一,原理比較簡單,但效率比較高,背過就完事了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章