|
|
|
Скопировать содержимое одного файла в другой, но что бы строки были отсортированы по длине
|
|||
|---|---|---|---|
|
#18+
Есть такая задачка: есть файл A.txt, в котором есть разные строки; нужно скопировать содержимое файла A.txt в файл B.txt, но что бы скопированные строки были в отсортированном порядке по длине. Сделал, только вот сортировку не знаю как сделать. Плюс к заданию: добавить возможность указывать исходный файл, целевой файл и направление сортировки (восходящая или спадающая) в командной строке, например так: java SortFile aa.txt bb.txt asc , где SortFile — класс, который мы запускаем, aa.txt — исходный файл, bb.txt — целевой файл, asc или desc — направление сортировки. Спасибо за помощь! Если нужен листинг, могу выслать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 16:52:52 |
|
||
|
Скопировать содержимое одного файла в другой, но что бы строки были отсортированы по длине
|
|||
|---|---|---|---|
|
#18+
А проблема-то какая? Считаем длины строк. Сортируем. Копируем строки в порядке полученом после сортировки. Такой сложный алгоритм? Или какие-то ещё условия есть? Например большой объем файла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 17:02:19 |
|
||
|
Скопировать содержимое одного файла в другой, но что бы строки были отсортированы по длине
|
|||
|---|---|---|---|
|
#18+
Да нет, совсем простая задача, но я только начинаю :) На словах то понятно.. Примерно можешь написать на джава как это реализовать в моем коде? Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 17:12:31 |
|
||
|
Скопировать содержимое одного файла в другой, но что бы строки были отсортированы по длине
|
|||
|---|---|---|---|
|
#18+
Да, задачка может быть интересной в плане нахождения оптимального решения под какие-то конкретные условия. Например, вот два крайних варианта: 1) Пройтись по всему файлу N раз, где N - количество строк, на каждом чтении выбирая следующую по длине. Памяти минимум надо, на работать будет очень долго. 2) Чистый in-memory: вычитать все в память за раз, потом отсортировать. Очень быстро, но загадит память. Ну а дальше можно выдумавать все, что угодно. Например, пройтись по файлу, подсчитать и запомнить длины строк. Потом отсортировать только длины, запомнив их изначальный позиции, а потом пройтись несколько раз по файлу, но выбирая не по одной строке, а по несколько, укладывающихся в последовательность. Короче говоря, тут надо фантазию подключать и помнить про алгоритмическую сложность и потребление памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 17:14:54 |
|
||
|
Скопировать содержимое одного файла в другой, но что бы строки были отсортированы по длине
|
|||
|---|---|---|---|
|
#18+
Читаем: https://www.google.com/search?q=Java file to string array Сортируем: https://www.google.com/search?q=Java sort array with comparator Куча готового кода по ссылкам выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 17:15:36 |
|
||
|
Скопировать содержимое одного файла в другой, но что бы строки были отсортированы по длине
|
|||
|---|---|---|---|
|
#18+
Спасибо! Буду разбираться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 17:17:40 |
|
||
|
Скопировать содержимое одного файла в другой, но что бы строки были отсортированы по длине
|
|||
|---|---|---|---|
|
#18+
DEVcoachКороче говоря, тут надо фантазию подключать и помнить про алгоритмическую сложность и потребление памяти. Достаточно оптимальным и простым решением будет сканировние файла на перенос строки. Из чего получается список позиций и длин. Затем сортировка позиций по длине. Даже для огромных файлов, структура будет не такой уж и большой, кроме клинических случаев. Затем вычитывать уже отсортированые позиции из структуры и копировать строки, читая из RandomAccessFile. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 17:21:23 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38387021&tid=2128665]: |
0ms |
get settings: |
16ms |
get forum list: |
18ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
53ms |
get topic data: |
17ms |
get forum data: |
5ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 281ms |
| total: | 469ms |

| 0 / 0 |
