Ефективні сортування складності n log n
Перегляд у форматі PDFДано масив дійсних чисел, серед яких можуть бути як різні, так і однакові.
Відсортуйте цей масив, застосувавши ефективне сортування складності ~n\log n~. Сайт ніяк не намагається перевіряти, який із ефективних алгоритмів (QuickSort, воно ж швидке сортування, воно ж сортування Хоара, чи MergeSort, воно ж сортування злиттям, чи HeapSort, воно ж пірамідальне сортування, воно ж сортування купою, чи ще якийсь достатньо ефективний алгоритм) використовується. (Однак, перевіряється, чи сортування правильне, і чи це якийсь ефективний алгоритм, чи неефективний.)
Який з ефективних алгоритмів використано, перевірятиметься суто вручну.
Протокол взаємодії
Ваша програма повинна багатократно повторювати такі дії:
- прочитати один рядок, який містить розділені одинарними пробілами дійсні числа
- кількість невідома, але їх точно не менше одного й не більше мільйона;
- якщо число неціле, то ціла і дробова частини розділяються крапкою
.;
- відсортувати цей масив;
- вивести його, в один рядок через одинарні пробіли
- не намагайтеся красиво форматувати та/або заокруглювати ці числа, бо це може призвести до вердикту «неправильна відповідь»; просто виводьте через, наприклад,
Console.WriteLine(string.Join(" ", arr));
- не намагайтеся красиво форматувати та/або заокруглювати ці числа, бо це може призвести до вердикту «неправильна відповідь»; просто виводьте через, наприклад,
- прочитати наступний рядок, яий гарантовано міститиме або єдине слово
continue, або єдине словоstop(маленькими латинськими буквами, без будь-яких зайвих символів), після чого:- якщо це слово
continue, то повторити все вказане вище для нового рядка-масиву; - якщо це слово
stop, то завершити роботу.
- якщо це слово
Важливо виводити відсортований попередній масив до (раніше) того, як читати чергове слово continue або stop.
Приклад взаємодії
| Ваша програма вводить | Ваша програма виводить |
|---|---|
| 3 1 4 | |
| 1 3 4 | |
| continue | |
| 3 1 4 1 5 9 2 6 3.1416 | |
| 1 1 2 3 3.1416 4 5 6 9 | |
| stop |
Нібито порожні рядки у прикладі зроблені суто для того, щоб краще було видно, що повинно відбутися раніше і що пізніше; вводити/виводити їх не треба.
Той самий приклад у вигляді, більш зручному для копіювання:
3 1 4
continue
3 1 4 1 5 9 2 6 3.1416
stop
Але не варто сприймати цей вигляд просто за вхідні дані, бо, повторюю, важливо виводити відсортований попередній масив до (раніше) того, як читати наступне слово continue або stop.
Коментарі