0 / 0 / 0
Регистрация: 08.05.2016
Сообщений: 19
|
||||||
1 | ||||||
Перенести нулевые элементы в начало массива29.06.2016, 07:53. Показов 6070. Ответов 6
Метки сортировать массив (Все метки)
Доброго времени. Ниже дан фрагмент программы, который должен сортировать массив следующим образом: сначала располагаются все элементы, равные нулю, а потом — все остальные. Пример: исходный массив - 10203, отсортированный должен выглядеть так - 00123. Но алгоритм не работает.
0
|
29.06.2016, 07:53 | |
Ответы с готовыми решениями:
6
Перенести в начало массива нулевые элементы одномерный массив. Все его элементы, не равные нулю, переписать, сохраняя их порядок в начало массива, а нулевые элементы в конец массива in c++ Переместить нулевые элементы в начало массива Нулевые элементы переместить в начало массива |
90 / 22 / 35
Регистрация: 29.06.2016
Сообщений: 96
|
|||||||||||
29.06.2016, 08:13 | 2 | ||||||||||
А почему нумерацию с 1 начинаете?
И вообще, вот правильный алгоритм
0
|
Модератор
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,718
|
||||||
29.06.2016, 08:35 | 3 | |||||
Banonanelly, Ваш алгоритм нарушит порядок расположения ненулевых элементов (их сортировать не надо).
1
|
0 / 0 / 0
Регистрация: 08.05.2016
Сообщений: 19
|
||||||
30.06.2016, 05:45 [ТС] | 4 | |||||
Ваш алгоритм работает, но в моей программе (когда я его перенес и адаптировал) он выдаёт следующее (см. скрин 1). Причем это 1049 выдает при любом массиве любой размерности вместо последнего 0 или первого числа<>0 в отсортированном массиве в зависимости от того, с чего начинаем. На 2 и 3 скрине должны быть одинаковые результаты, но это не так.
Может, проблема в другой части программы? Вот код всей программы, хотя я ошибок не нашел.
0
|
Модератор
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,718
|
||||||
30.06.2016, 06:41 | 5 | |||||
Индексы в массиве начинаются с нуля и заканчиваются k-1 - м элементом
1
|
0 / 0 / 0
Регистрация: 08.05.2016
Сообщений: 19
|
|
30.06.2016, 07:01 [ТС] | 6 |
Заработало, спасибо, но почему это так важно? Почему от такой мелочи зависит так много?
0
|
Модератор
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,718
|
|
30.06.2016, 07:06 | 7 |
Это не мелочь.
Нулевой элемент остается неинициализированным, а обращаясь к k-ому элементу Вы выходите за границы массива с непредсказуемыми последствиями.
0
|
30.06.2016, 07:06 | |
30.06.2016, 07:06 | |
Помогаю со студенческими работами здесь
7
В каждой строке все элементы, не равные нулю, переписать в начало строки, а нулевые элементы – в конец массива Как перенести нулевые элементы массива на парные позиции? Перенести нулевые элементы в конец массива (исправить ошибку) Положительные элементы массива перенести в начало Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |