Почему моя сортировка пузырьков не работает должным образом? - PullRequest
0 голосов
/ 15 февраля 2020

Я пытался создать 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()

Спасибо вы.

Ответы [ 2 ]

0 голосов
/ 15 февраля 2020
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)

! для j в диапазоне (0, len (UserNameArray) -1-i):

0 голосов
/ 15 февраля 2020

Попробуйте это:

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()
...