[英]Bubble Sort Algorithm in Python - Last Number Not Sorting
該算法對除第一個以外的所有數字進行排序,並將其設置為最后一個。 請幫忙!
def bubbleSort(numbers): # Bubble Sort Algorithm
numbers = list(numbers)
i = 0
j = 0
for i in range(len(numbers)):
for j in range(len(numbers) - i):
if numbers[j] < numbers[j-1]:
temp = numbers[j-1]
numbers[j-1] = numbers[j]
numbers[j] = temp
print numbers
print numbers
問題是有時[j-1]變為負數。 在python中,numbers [-1]表示“獲取數字中的最后一個元素”。 這是固定版本:
def bubbleSort(numbers): # Bubble Sort Algorithm
nums = list(numbers)
for i in range(len(nums)):
for j in range(i+1, len(nums)):
if numbers[j] < numbers[i]:
numbers[j], numbers[i] = numbers[i], numbers[j]
print numbers
您會注意到,在python中也可以在沒有臨時變量的情況下交換數字
我不會將其描述為“氣泡排序”,因為它不會交換彼此相鄰的列表元素。 它更像是一個“選擇排序”,因為它要遍歷列表並將每個元素與第一個元素進行比較,然后與第一個元素交換最小的數字。
似乎是氣泡/選擇混搭。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.