Python中的冒泡排序算法 - 最后一个数字不排序

时间:2012-02-09 02:22:59

标签: python algorithm

算法对除第一个数字之外的所有数字进行排序,并将其设置为最后一个。请帮忙!

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

2 个答案:

答案 0 :(得分:6)

问题是有时[j-1]变为负面。在python中,数字[-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中也可以交换没有临时变量的数字

答案 1 :(得分:0)

我不会将其描述为“冒泡排序”,因为它不会交换彼此相邻的列表元素。它更像是一个'选择排序',因为它正在查看列表并将每个元素与第一个元素进行比较,然后将最小的数字与第一个元素进行交换。

这似乎是一个泡沫/选择混搭。