Opened 5 years ago
Closed 5 years ago
#239 closed ожидается проверка (задача сдана)
WW #4
Reported by: | tarasov.denis | Owned by: | Sokolov Viacheslav |
---|---|---|---|
Component: | WW_mergesort | Version: | 2.0 |
Keywords: | Cc: |
Description
Change History (3)
comment:1 Changed 5 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
comment:2 Changed 5 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 1.0 → 2.0 |
comment:3 Changed 5 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
Потеряна константность в компараторах.
Выгода от попытки обобщения осталась неясна.
swap не используется. (лишний код).
Контракты: что, если (n1 + n2) * el_size переполнится?
el_size == 0?
n == 0?
Note: See
TracTickets for help on using
tickets.
Проверка контрактов! https://wiki.compscicenter.ru/index.php/C%2B%2B_1MIT_осень_1_2019#.D0.A2.D1.80.D0.B5.D0.B1.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D1.8F_.D0.BA.D0.BE.D1.80.D1.80.D0.B5.D0.BA.D1.82.D0.BD.D0.BE.D1.81.D1.82.D0.B8.2C_.D0.BF.D1.80.D0.B5.D0.B4.D1.8A.D1.8F.D0.B2.D0.BB.D1.8F.D0.B5.D0.BC.D1.8B.D0.B5_.D0.BA_.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D0.B0.D0.BC
swap нигде не используется
Понимаю мотивацию, стоящую за попыткой универсализации:
но... общего кода - всего две строчки:
и
Кажется, более удачное решение - в каждом из случаев решать конкретную задачу. Сейчас overhead на обобщение больше, чем выгода от него. Это особенность языка Си - именно на этом языке не очень удобно писать переиспользуемый код. В Си++ с этим все намного лучше.
`
`
кажется, +2 не в том месте.
Для сортировки строк аллокация не нужна. Для других сортировок на самом деле можно тоже обойтись без аллокации (становится дороже оператор сравнения), но и аллокация является нормальным решением.
В реализации merge на самом деле можно обойтись одним циклом while, если в нем предполагать, что один из указателей уже достиг границы. Но сейчас тоже неплохо.