Не уверен, что это дубликат. Учитывая структуру данных, имеющую первые N
целые числа и следующие N
символы. A = i1 i2 i3 ... iN c1 c2 c3 ... cN
. Мне нужен алгоритм на месте, чтобы переставить элементы как A = i1 c1 i2 c2 ... iN cN
.Реорганизация элементов массива
ответ
Ваша проблема эквивалентна переносу матрицы 2xN на место. Вы можете прочитать теорию здесь: http://en.wikipedia.org/wiki/In-place_matrix_transposition
Возможно, в специальном случае матрицы 2xN существует более простой алгоритм, но я не могу придумать ни одного. Общая идея состоит в том, чтобы следовать циклам перестановки.
Можете ли вы не генерировать эти циклы, используя http://www.cplusplus.com/reference/algorithm/next_permutation/? –
@ Андре: Нет. Какая связь? – ybungalobill
Ничего, я смутился чем-то другим. –
Я считаю, что это стандартная проблема сортировки.
Все что вам нужно, это хорошая функция сравнения, затем используйте qsort
.
Вы знакомы с qsort
?
Вы создали какую-либо часть функции сравнения, которую вы можете поделиться с нами?
Редактировать
Как commentors уже отмечалось, qsort
, std::sort
и другие подобные процедуры нужны объекты одинакового размера. Поскольку вопрос требует массива int и символов, которые имеют разные размеры и не являются строго возможными в C/C++, требуется дополнительная информация.
Как именно объявляется этот массив? Насколько велики цепочки и насколько велики символы? Существует ли существование символов, что N ограничено 255?
Еще раз, код будет действительно помощь.
Зачем использовать C-библиотеку при наличии версий C++? std :: sort() –
Вам нужно поддерживать порядок, в котором появляются символы int/chars, поэтому сортировка не будет работать. – casablanca
Любая стабильная сортировка (mergeSort, insertionSort, bubbleSort) будет работать, но qsort (quickSort) нестабилен, поэтому он не будет работать для того, что хочет OP. –
- 1. Реорганизация массива 4d numpy
- 2. Реорганизация многомерного массива
- 3. PHP реорганизация массива
- 4. Реорганизация массива в PHP
- 5. Реорганизация дочерних элементов экземпляра SplObjectStorage
- 6. Реорганизация элементов DOM с javascript
- 7. Реорганизация каждого элемента третьего массива
- 8. Реорганизация массива Ruby в hash
- 9. Реорганизация многомерного массива в PHP
- 10. C#: Приоритизация/реорганизация строкового массива
- 11. Реорганизация массива объектов и массивов WP_Post
- 12. Реорганизация массива, возвращаемого matplotlib.pyplot.imread (* args, ** kwargs)
- 13. PHP - Реорганизация массива в другой массив
- 14. C++ Реорганизация массива для заполнения пробелов?
- 15. Реорганизация файла
- 16. Реорганизация DataFrame
- 17. Матричная реорганизация
- 18. Реорганизация столбцов фрейма данных
- 19. Условная реорганизация XML
- 20. Удаление элементов массива из других элементов массива
- 21. Реорганизация массива: нечетные записи как KEY, даже записи как VALUE
- 22. Реорганизация данных для quadtree/octree
- 23. Реорганизация после интерполяции
- 24. Реорганизация цифровой оси
- 25. Реорганизация данных с R
- 26. Реорганизация панды DataFrame
- 27. Реорганизация кадра данных
- 28. Реорганизация данных в Excel
- 29. точка монтирования точек реорганизация
- 30. Реорганизация данных в SQL
Почти дубликат: http://stackoverflow.com/questions/3777184/rotate-2d-rectangular-array-in-place/3777262 – ybungalobill
В чем вопрос? Конечно, мы не собираемся писать для вас весь ваш код. У вас есть код для обмена? У вас есть проблемы, с которыми мы можем вам помочь? – abelenky
btw: Как массив C/C++ хранит как символы, так и ints, без большого количества приведения типов? – abelenky