Почему длительность алгоритма быстрой сортировки увеличивается, когда массив имеет повторяющиеся значения?

Поскольку данные, как представляется, находятся в формате словаря, кажется, что вы действительно должны использовать csv.DictWriter () для фактического вывода строк с соответствующей информацией заголовка. Это должно позволить упростить обработку. Параметр fieldnames затем правильно настроил порядок, в то время как вывод первой строки, поскольку заголовки позволили бы его читать и обрабатывать позже csv.DictReader ().

Например, Майк Рефас использовал

output = csv.writer(sys.stdout)

output.writerow(data[0].keys())  # header row

for row in data:
  output.writerow(row.values())

Однако просто измените начальную настройку на output = csv.DictWriter (наборы файлов, fieldnames = data [0] .keys ())

Обратите внимание, что поскольку порядок элементов в словарь не определен, вам, возможно, придется явно создавать записи полей. Как только вы это сделаете, писатель будет работать. Затем записи записываются так, как показано на рисунке.

3
задан A. Khaled 30 March 2019 в 07:34
поделиться

1 ответ

Почему длительность алгоритма быстрой сортировки увеличивается, если в массиве есть повторяющиеся значения?

Это верно только в случае использования схемы разбиения типа Lomuto, где повторяющиеся значения приводят к получению разбиения хуже.

При использовании схемы разбиения Hoare длительность алгоритма обычно уменьшается, когда массив имеет дублирующиеся значения, потому что разбиение приближается к идеальному случаю разделения ровно пополам, а улучшенное разделение компенсирует дополнительные перестановки в типичной системе с памятью. кэш.

0
ответ дан rcgldr 30 March 2019 в 07:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: