0 / 0 / 0
Регистрация: 09.07.2014
Сообщений: 4
|
||||||
1 | ||||||
Пузырьковая сортировка двумерного символьного массива09.07.2014, 20:50. Показов 2538. Ответов 9
Метки нет (Все метки)
Передо мной была поставлена задача написать код, осуществляющий сортировку рандомно-сгенерированого символьного массива.
Сгенерировал нормально, а вот с сортировкой проблема. Синтаксических ошибок не имеется, программа просто падает(Ну разумеется не просто а ввиду кривизны моих рук). Глубокими познаниями в C не располагаю, посему надеюсь, вы тыкнете меня носом, и обьясните что и как. Подозреваю, что накосячил с указателями, но вот где в толк не возьму, выглядит вроде все приемлемо... В общем.. Вот код. Кликните здесь для просмотра всего текста
0
|
09.07.2014, 20:50 | |
Ответы с готовыми решениями:
9
Упорядочивание массива по возрастанию (пузырьковая сортировка) Построковая сортировка символьного массива Сортировка символьного массива по строкам в порядке возрастания слов Пузырьковая сортировка двумерного массива |
Модератор
|
|||||||||||
09.07.2014, 21:47 | 2 | ||||||||||
C массивами строк так:
И, мне кажется, что строка 20 просто лишняя. Обрати еще внимание на размеры массива buffer. Я бы увеличил размер на 1 (на нуль-символ).
1
|
430 / 384 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
|
|
09.07.2014, 22:07 | 3 |
Три вопроса:
1. Принципиально использовать свою функцию сортировки? 2. Принципиально использовать именно пузырьковую сортировку? 3. Как понять двумерную сортировку? Подразумевается, что каждая строка должна быть отсортирована, а потом строки отсортированы друг относительно друга? Или массив можно рассматривать как одну строку? Возьмем тривиальный случай, массив 2х2. Вот такой: Y B Z A В первом случае мы отсортируем сначала каждую строку B Y A Z А потом переставим строки и получим A Z B Y Это если сортировать сначала внутри строк, потом сами строки. Если рассматривать массив как строку, получаем A B Y Z То есть мы как бы отсортировали строку "YBZA" в "ABYZ". Так какой метод правильный? Или какой-то третий?
0
|
0 / 0 / 0
Регистрация: 09.07.2014
Сообщений: 4
|
|||||||||||
10.07.2014, 01:30 [ТС] | 4 | ||||||||||
1. Да
2. Нет, просто мне она видится самой простой в её реализации 3. Двумерный символьный массив, т.е. массив из строк. Сортируем строки между собой в алфавитном порядке, внутри строк изменений не должно происходить. Добавлено через 52 секунды Код, поменял, и насчет двадцатой строки это да... понесло меня не спорю) Добавлено через 1 минуту Нашел почему программа падала. Но сейчас кое-какие другие проблемы. Когда разберусь - отпишусь, если интересно) Добавлено через 18 минут В общем не могу понять что происходит, программа работает, но работает неправильно. В результате сортировки она каким-то образом заполняет все строки массива тем, что расположено в последней его строчке изначально. Замена строк через буфер вроде верно... С флажками и условиями тоже все правильно.... Вот исправленный исходник, может вы найдете, где я ошибся..: Кликните здесь для просмотра всего текста
Добавлено через 3 минуты
0
|
430 / 384 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
|
|
10.07.2014, 08:55 | 5 |
Ну ладно.
Мне больше нравится гномья сортировка. По сути, это разновидность пузырьковой, но короче и проще писать. Я просмотрел код по диагонали и увидел там какие-то перемещения символов. Вы что, сортируете строки их тупым копированием с одного места на другое? Охосспадя... Это ужос-ужос-ужос. Дедушко, забери меня отсюда.
0
|
0 / 0 / 0
Регистрация: 09.07.2014
Сообщений: 4
|
|
10.07.2014, 09:20 [ТС] | 6 |
Конкретики побольше, ато даже как-то не очень тупым себя почувствовал..
0
|
430 / 384 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
|
||||||
10.07.2014, 12:07 | 7 | |||||
0
|
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
|
|
10.07.2014, 13:08 | 8 |
Если размер строки N (например, 400 элементов), то потребуется копировать 3N байт ( 3*400 == 1200 байт ).
В коде Vtulhu копируются указатели. Если размер указателя 4 байта, то копируется 12 байт. Независимо от размер строки.
1
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
|
|
10.07.2014, 13:57 | 9 |
0
|
0 / 0 / 0
Регистрация: 09.07.2014
Сообщений: 4
|
|
12.07.2014, 12:41 [ТС] | 10 |
Ох уж эти указатели, не совсем понимаю их... Ну ладно, теперь в полной мере осознал глупость того, что делал, исправлю)
0
|
12.07.2014, 12:41 | |
12.07.2014, 12:41 | |
Помогаю со студенческими работами здесь
10
Пузырьковая сортировка двумерного массива Сортировка вставками двумерного символьного массива Сортировка двумерного символьного массива по алфавиту Заполнение двумерного символьного массива Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |