來幾個基礎的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)
這是對冒泡法的進一步改進,過濾了一些不必要的循環,提高了效率。
冒泡法算是必須具備的排序法之一,原理比較簡單,但效率比較高,背過就完事了。