为什么我的气泡排序不能正常工作?

问题描述 投票:-1回答:1

我一直在尝试创建BubbleSort来整理数组。数组的名称为UserNameArray,数组的格式为。是一个由六个字符组成的数字字符串,而是一个字符串。一个示例如下所示:123456James。

我的程序整理出了一些数据,但是它无法运行几次才能真正整理出所有数据。

UserNameArray = ["234511Jack","734636Dan","237894Daniel", "124119James", "000001Test","999999Donald"]
def BubbleSort():
    for i in range(0,len(UserNameArray)-1):
        for j in range(0,i):
            UserID = int(UserNameArray[j][0:5])
            UserIDNext = int(UserNameArray[j+1][0:5])
            print(i,j)
            print(UserID,UserIDNext)
            if UserIDNext < UserID:
                store = UserNameArray[j]
                UserNameArray[j] = UserNameArray[j+1]
                UserNameArray[j+1] = store
            print(UserNameArray)
BubbleSort()

谢谢。

python sorting bubble-sort
1个回答
0
投票

尝试一下:

UserNameArray = ["234511Jack","734636Dan","237894Daniel", "124119James", "000001Test","999999Donald"]
def BubbleSort():
    for i in range(len(UserNameArray)-1,0,-1): // you use wrong direction here
        for j in range(0,i):
            UserID = int(UserNameArray[j][0:5])
            UserIDNext = int(UserNameArray[j+1][0:5])
            print(i,j)
            print(UserID,UserIDNext)
            if UserIDNext < UserID:
                store = UserNameArray[j]
                UserNameArray[j] = UserNameArray[j+1]
                UserNameArray[j+1] = store
            print(UserNameArray)
BubbleSort()

0
投票
UserNameArray = [
    "234511Jack",
    "734636Dan",
    "237894Daniel", 
    "124119James", 
    "000001Test",
    "999999Donald"
]
def BubbleSort():
    for i in range(0,len(UserNameArray)-1):
        for j in range(0,len(UserNameArray)-1-i):
            UserID = int(UserNameArray[j][0:5])
            UserIDNext = int(UserNameArray[j+1][0:5])
            if UserIDNext < UserID:
                store = UserNameArray[j]
                UserNameArray[j] = UserNameArray[j+1]
                UserNameArray[j+1] = store

BubbleSort()
print(UserNameArray)

!对于范围(0,len(UserNameArray)-1-i)中的j:

© www.soinside.com 2019 - 2024. All rights reserved.