簡體   English   中英

Python中的冒泡排序算法-不對最后一個數字進行排序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM