Форум программистов, компьютерный форум CyberForum.ru

Отсортировать массив змейкой - C++

Восстановить пароль Регистрация
Результаты опроса: Автор - идиот?
Однозначно. Это же элементарно! 1 50.00%
Отсортировать просто, над выводом надо подумать. 1 50.00%
Вставками - бред. Пузырек рулит 0 0%
Сам не знаю, как сделать 0 0%
Голосовавшие: 2. Вы ещё не голосовали в этом опросе

 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
Hose
0 / 0 / 0
Регистрация: 25.04.2009
Сообщений: 3
25.04.2009, 18:55     Отсортировать массив змейкой #1
Есть массив, который заполняется случайными числами (допустим, 0-9).
Отсортировать его по невозрастанию (каждый следующий элемент не более предыдущего) и вывести его змейкой, как показано на рисунке.

Примечания:
1. Отсортировать вставками
2. Запрещается вводить дополнительные массивы, сортировать в исходном двумерном.
3. Должен работать как с четным, так и нечетным размером

Помогите, плиз
Миниатюры
Отсортировать массив змейкой  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.04.2009, 18:55     Отсортировать массив змейкой
Посмотрите здесь:

C++ Заполнение змейкой, массив не 2D!
C++ Заполнить массив змейкой справа налево
Массив: преобразорвать двумерный массив в одномерный и отсортировать его методом пузырька C++
C++ Вывести массив змейкой(три вида)
C++ Ввести массив А. В массив В перенести все элементы массива А, стоящие правее максимального элемента, и имеющие нечетный индекс. Массив В отсортировать
C++ Массив: отсортировать массив в порядке возрастания и найти количество соседних пар элементов отличающихся между собой
Двухмерный массив (заполнить змейкой квадратную матрицу) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Анонимус
0 / 0 / 0
Регистрация: 24.04.2009
Сообщений: 16
25.04.2009, 19:03     Отсортировать массив змейкой #2
сортировку лучше квиксортом
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1345 / 878 / 51
Регистрация: 02.01.2009
Сообщений: 2,642
Записей в блоге: 1
25.04.2009, 19:09     Отсортировать массив змейкой #3
Цитата Сообщение от Анонимус Посмотреть сообщение
сортировку лучше квиксортом
По уловию задачи :
Цитата Сообщение от Hose Посмотреть сообщение
1. Отсортировать вставками
Hose
0 / 0 / 0
Регистрация: 25.04.2009
Сообщений: 3
25.04.2009, 19:27  [ТС]     Отсортировать массив змейкой #4
Сортировка вставками на малых массивах дает наилучший результат, к тому же ISergey правильно заметил - таково условие.

Предпочтительно на C (тогда я пойму ), но и на C++ не обижусь
Patch
2276 / 491 / 11
Регистрация: 01.04.2009
Сообщений: 2,178
25.04.2009, 19:48     Отсортировать массив змейкой #5
да любым методом... написать формулу, приводящую координаты исходного массива к схеме змейки - и сортируй хоть пузырьками, хоть монте-карло...
Hose
0 / 0 / 0
Регистрация: 25.04.2009
Сообщений: 3
25.04.2009, 20:05  [ТС]     Отсортировать массив змейкой #6
Это понятно, только вот ну не доходит до меня, как реализовать
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.04.2009, 21:18     Отсортировать массив змейкой
Еще ссылки по теме:

Создать одномерный массив, заполнить его случайными значениями, отсортировать массив по убыванию C++
Отсортировать массив по убыванию, затем добавить недостающий элемент и отсортировать массив по возрастанию C++
Вывести массив "змейкой" C++
C++ Создать линейный массив, отсортировать его в другой массив, вывести адрес всех елементов
C++ Создать линейный массив, отсортировать его в другой массив, вывести адрес всех елементов

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
EnzoMatrix
 Аватар для EnzoMatrix
120 / 120 / 4
Регистрация: 14.03.2009
Сообщений: 462
25.04.2009, 21:18     Отсортировать массив змейкой #7
что то в этом духе наверно
C++
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
i=0;
j=0;
k=0;
m=0;//i,j координаты в змейке, k,m-в исходном
perestanovka(k,m,i,j);//процедура перестановки элемента[k,m] и [i,j])
for(;(i<n)||(j<n);)//через кучу циклов задаем путь змейки
   {
   j++;
   k++; if (k==n) {k=0;m++}
   perestanovka(k,m,i,j);
   for(;(i<n)&&(j>0);)
      {
      j--;
      i++;
      k++; if (k==n) {k=0;m++}
      perestanovka(k,m,i,j);
      }
   i++;
   perestanovka(k,m,i,j);
   for(;(i>0)&&(j<n);)
      {
      i--;
      j++;
      k++; if (k==n) {k=0;m++}
      perestanovka(k,m,i,j);
      }
   }
//не тестил прогу, как пашет не знаю
Добавлено через 25 минут 44 секунды
можно при желании сразу выводить, тогда k,m будут координатами вывода, но если числа не одинаковой длины то тяжко придется
Yandex
Объявления
25.04.2009, 21:18     Отсортировать массив змейкой
Ответ Создать тему
Опции темы

Текущее время: 03:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru