#python #date #quicksort
Вопрос:
Я написал алгоритм быстрой сортировки, но он не сортирует файл .txt так, как я хочу. Он должен отсортировать их по датам (в форме day.month.year
). Вместо quicksort()
этого сортируйте файл в соответствии с днем и не учитывайте месяц и год. Пример:
05.01.2018 rr
03.01.2018 aa
01.04.2018 aba
02.02.2018 zystz
следует отсортировать по:
03.01.2018 aa
05.01.2018 rr
02.02.2018 zystz
01.04.2018 aba
но мой код сортирует их так:
01.04.2018 aba
02.02.2018 zystz
03.01.2018 aa
05.01.2018 rr
Это мой quicksort()
алгоритм:
f = open(testfile)
arr = f.readlines()
def QuickSort(arr, start= 0, end=len(arr)-1):
def partition(arr, starting, end):
piv_index = starting
piv = arr[piv_index]
while starting < end:
while starting < len(arr) and arr[starting] <= piv:
starting = 1
while arr[end] > piv:
end -= 1
if starting < end:
arr[starting], arr[end] = arr[end], arr[starting]
arr[end], arr[piv_index] = arr[piv_index], arr[end]
return end
if start < end:
p = partition(arr, start, end)
QuickSort(arr, start, p-1)
QuickSort(arr, p 1, end)
return(arr)
for s in QuickSort(arr):
print(s)
Есть какие-нибудь предложения?
Редактировать: Мне нужно использовать quicksort()
для задания, поэтому встроенные функции сортировки, такие как sorted()
нельзя использовать. Формат также должен оставаться днем.месяцем.год. Извините, что я недостаточно ясно выразился.
Комментарии:
1. Почему вы используете пользовательскую функцию сортировки вместо встроенной
sorted
? Вы уже задавали этот вопрос один раз и получили ответ, который, похоже, распространяется и на этот случай; ваша функция, похоже, ничего не делает для изменения ключа сортировки с чисто алфавитного.2. Если вы измените его на дату месяца года, они будут отсортированы правильно.
3. Извините, я должен упомянуть, что мы не должны использовать какие-либо встроенные функции, такие как сортировка(). Также формат должен оставаться днем.месяцем. год.