Bubble Sort не выводится в правильном порядке (с плавающей точкой) - PullRequest
0 голосов
/ 07 мая 2019

не могу найти ничего об этом, потому что я не могу сказать это правильно.В основном, когда я сортирую свой список по списку с негативов до самого низкого негатива, а затем считываю позитивы, скажем, это [1.6397, -2.0215, -0.4933,, -3.4167], он будет сортироваться как [-0.4933, -2.0215, -3.4167, 1.6397]

по алгоритму

    def bubbleSort(array):
        n=len(array)
         for i in range(n):
            for j in range(0, n-i-1):
                while array[j]>array[j+1]:
                    array[j], array[j+1] = array[j+1], array[j]

Я хочу, чтобы это читалось как [-3.4167, -2.0215, -0.4933, 1.6397]

заранее спасибо

дополнительно:

    example=[]
    with open('ex.txt') as f:
        for l in f:
            l=l.strip()
            example.append(l)

    examplesearch=input('select array to sort')
    if (examplesearch == ex1):
    bubbleSort(example)
    print(example)

1 Ответ

1 голос
/ 07 мая 2019

Поскольку вы читаете из файла, введенные числа являются строками, поэтому Python использует сравнение строк (что видно по полученному вами результату).

Сначала необходимо преобразовать в float:

example = []
with open('ex.txt') as f:
    for l in f:
        l = float(l.strip())
        example.append(l)

BWT, вам не нужно предварительно создавать список:

with open('ex.txt') as f:
    # 'if number' will handle potential empty line at the end of the file
    output = [float(number.strip()) for number in f if number]
...