|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
26.11.2007, 22:12 | #1 |
Регистрация: 26.11.2007
Сообщений: 6
|
сортировка двумерного массива
Народ! Хелп... Необходимо
Составить программу сортировки двумерного массива по возрастанию. Использовать метод "сортировки выбором". я пробовал переделать код сортировки выбором одномерного массива, но чет не выходит мот кто поможет Листинг моей проги(что-то не палит) program zad30; uses crt; const N=2; {Количество строк массива} M=3; {Количество столбцов массива} var a: array[1..N,1..M] of integer; {массив} i,j,j1,z: integer; {счётчики для цикла} c: integer; {Переменная для промежуточного хранения} c2: integer; {Переменная для промежуточного хранения} c3: integer; {Переменная для промежуточного хранения} begin clrscr; for i:=1 to n do for j:=1 to m do readln(a[i,j]); clrscr; writeln('Введенный массив:'); for i:=1 to n do begin for j:=1 to m do write(a[i,j],' '); writeln end; for i:=1 to N-1 do begin for z:=1 to M-1 do begin {цикл по первому обрабатываемому элементу массива} c2:=i; {индекс предполагаемого минимального элемента} c3:=z; {поиск минимального элемента} for j:=i+1 to N do for j1:=z+1 to M do if a[c2,c3]>a[j,j1] then begin c2:=j;c3:=j1;end; {если в c2 индекс не минимального элемента,то в c2аписается индекс меньшего элемента} c:=a[i,z];a[i,z]:=a[c2,c3];a[c2,c3]:=c; {Меняем местами элемент массива} end; end; writeln ('Отсортированный массив:'); for i:=1 to n do begin for j:=1 to m do write(a[i,j],' '); writeln; end; READKEY; end. |
27.11.2007, 23:36 | #2 |
Регистрация: 26.11.2007
Сообщений: 6
|
Переписал ту чушь, что под пиво писал, ща все работает , но будет ли это сортировка выбором???? (прокомментируйте если да, а если нет , то мот кто дополнит код!!! )
uses Crt; const n = 4; m = 6; var a: array[1..n,1..m] of integer; a1: array[1..n*m,0..2] of integer; i,j,i1: integer; t1,t2,t3: integer; begin ClrScr; Randomize; {Vvodim massiv} for i:=1 to n do begin for j:=1 to m do begin a[i,j]:=Random(9)+1; a1[(i-1)*m+j,0]:=a[i,j]; a1[(i-1)*m+j,1]:=i; a1[(i-1)*m+j,2]:=j; Write(a[i,j]:4); end; Writeln; end; {Sortiruem dopolnitelniy massiv} for i:=1 to n*m-1 do begin for j:=i+1 to n*m do begin if (a1[i,0]>a1[j,0]){ or ((a1[i,0]>=a1[j,0]) and ((a1[i,1]-1)*m+a1[i,2]>(a1[j,1]-1)*m+a1[j,2]))} then begin t1:=a1[i,0]; t2:=a1[i,1]; t3:=a1[i,2]; a1[i]:=a1[j]; a1[j,0]:=t1; a1[j,1]:=t2; a1[j,2]:=t3; end; end; end; {Vozvrashaem v ishodniy massiv otsortirovannie znacheniya} j:=0; i:=1; for i1:=1 to n*m do begin Inc(j); if j>m then begin j:=1; Inc(i); end; a[i,j]:=a1[i1,0]; end; {Vivodim massiv na ekran} Writeln; for i:=1 to n do begin for j:=1 to m do begin Write(a[i,j]:4); end; Writeln; end; Readln; end. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вывод двумерного массива | Kocapb | Общие вопросы C/C++ | 4 | 11.10.2012 11:05 |
Сортировка двумерного массива | Makarov | Помощь студентам | 8 | 29.10.2011 11:55 |
Сортировка двумерного числового массива «спиралью» | vicvtor | Помощь студентам | 2 | 06.07.2011 09:10 |
Поворот двумерного массива | Guest_ | Общие вопросы C/C++ | 6 | 24.12.2007 23:02 |
Сортировка двумерного массива произвольной длины. Visual Basic | Pekc | Помощь студентам | 0 | 25.11.2007 19:30 |