Помощник
|
Сортировка двумерного массива, совет |
Galeodor
|
Сообщение
#1
|
||
|
|
||
|
|||
ZiTosS |
20.3.2009, 21:46;
Ответить: ZiTosS
Сообщение
#2
|
|
Приведи пример как толком должен отсортировать.
Двумерный массив понимает под собой строки и столбцы || -N- || -1- || -2- || -3- || -4- || -5- || ------------------------------------------ || -1- || 6 | 4 | 2 | 6 | 9 | ------------------------------------------ || -2- || 3 | 5 | 9 | 0 | 4 | ------------------------------------------ || -3- || 2 | 2 | 7 | 8 | 1 | ------------------------------------------ || -4- || 9 | 1 | 0 | 6 | 8 | ------------------------------------------ || -5- || 7 | 3 | 2 | 1 | 5 | ------------------------------------------ Как его нужно отсортировать? |
|
|
Galeodor
|
Сообщение
#3
|
|
...)))))) я конечно не напишу щас всю матрицу
ну типа должно быть || -N- || -1- || -2- || -3- || -4- || -5- || ------------------------------------------ || -1- || 0 | 0 | 1 | 2 | 2 | ------------------------------------------ || -2- || 3 | 4 | 4 | 5 | 6 | ------------------------------------------ и т.д. |
|
|
Galeodor
|
Сообщение
#4
|
|
а...слышь, парни, а я могу работать с адресами ячеек памяти? типа если по этому адресу число больше чем по следующему то перставить, и т.д. методом пузырька?
|
|
|
ZiTosS |
21.3.2009, 10:52;
Ответить: ZiTosS
Сообщение
#5
|
|
Galeodor, язык то хоть какой? В php если что нет указателей, если Cи или С++ то можно.
Вот посмотри ссылку, там 3 метода сортировки _http://www.vzmakh.ru/info/pascal/modules/page14.html А как ты показал, сортировку можно осуществить только для одномерного массива. Если ты будешь работать с указателями, то тогда можно и методом пузырька воспользоваться Могу объяснить как будет идти указатель по массиву. |
|
|
Galeodor
|
Сообщение
#6
|
|
а не пох какой язык? :) мне алгоритм нужен а не решение :)
вот про указатели расскажи плиз, я понял, что они ссылаются на ячейку памяти, при прибавлении const к указателю изменяется не переменная, на которую он ссылается,а адрес ячейки памяти перескакивает на константу. Можешь либо ссыль дать на указатели с объяснениями, либо тут если не лень :) |
|
|
ZiTosS |
22.3.2009, 1:11;
Ответить: ZiTosS
Сообщение
#7
|
|
вот тут можно почитать подробнее
Введение в язык Си Мой пример с указателями int massiv[5] = {5,7,10,16,1}; //объявляем массив int *point; //объявляем указатель point = massiv; // передаём указателю адрес на 0 элемент массива, идентично point = &massiv[0] printf("Выбранное число: %d", *point); // *point - взятие значения по адресу (выведет число 5) point++; // сдвинули адрес указателья на следующую ячейку printf("Выбранное число: %d", *point); // выведет число 7 *point++; // прибавили к значению в ячейке 1-ку printf("Выбранное число: %d", *point); // выведет число 8 То есть в краткости суть. 1) При объявдении указателя нужно указать: тип_на_который_ссылается *имя_указателя; 2) *имя_указателя - взятие значения по адресу имя_указателя - адрес на который ссылается указатель 3) Изменил значение в указателе, изменил и зачение переменной, на которую он ссылается. |
|
|
Galeodor
|
Сообщение
#8
|
|
вот за код с массивом и выводом офигенное спасибо. Все сразу понятно стало.
|
|
|
Galeodor
|
Сообщение
#9
|
|
прошу код проверить. Он работает. все кул. тупо на оптимизацию.
Сортировка массива 3*3 из случайных чисел по возрастанию. # include <stdio.h>
# include <stdlib.h> # include <conio.h> void main() { int mas[3][3]; int i,j; clrscr(); randomize(); //заполняю массив из случайных чисел for (i=0;i<3;++i) { for (j=0;j<3;++j) mas[i][j]=random(100); } //вывожу заполненный несортированный массив for (i=0;i<3;++i) { for (j=0;j<3;++j) printf("%d\t",mas[i][j]); printf("\n"); } getch(); int *m; m=&mas[0][0]; //методом пузырька сортирую по возрастанию исходя из того, что число из предыдущей учейки памяти больше чем в следующей ячейке int a=8; while (a>=0) { for (i=0;i<a;++i) if (*(m+i)>*(m+i+1)) { int per; per=*(m+i+1); *(m+i+1)=*(m+i); *(m+i)=per; } a--; } //вывожу отсортирный массив for (i=0;i<3;++i) { for (j=0;j<3;++j) printf("%d\t",mas[i][j]); printf("\n"); } getch(); //конец... } |
|
|
ZiTosS |
23.3.2009, 11:10;
Ответить: ZiTosS
Сообщение
#10
|
|
|
В аське с тобой говаорили
1) Вместо твоего while можно использовать for 2) С указателями можно работать как с массивами. *(m+i) -> m[i] *(m+i+1) -> m[i+1]
|
|
|
||
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Нужна помощь с DLE (сортировка новостей) | 0 | dimonsuper | 3216 | 7.1.2015, 15:19 автор: dimonsuper |
|
Запись массива в БД (200 RUR) | 3 | pjotr | 3493 | 7.2.2013, 15:41 автор: -A1ex- |
|
Из многомерного массива создать папки [СРОЧНО] | 9 | LifeUP | 6215 | 20.8.2012, 20:05 автор: -HTMLandPHP- |
|
Сортировка | 5 | Tigor.v | 8201 | 14.2.2011, 22:03 автор: -Tigor.v- |
Текстовая версия | Сейчас: 19.4.2024, 3:56 |