|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
"Быстрая сортировка" двухмерного массива
Здравствуйте, может кто то выложить пример кода "Быстрой сортировки" двухмерного массива?
То поиск по интернету приводит меня к исходникам на другом языке программирования, либо к другим видам сортировки, а нужна именно "Быстрая сортировка"... Заранее благодарен. |
#2
|
||||
|
||||
Это подойдет?
http://skachivaem.ru/articles/50-del...3--delphi.html Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
||||
|
||||
Страдалецъ, там исходник для одномерного массива... а нужен для двухмерного...
|
#4
|
||||
|
||||
Ну вот почти оттуда-же:
Вариант 1: Код:
uses crt; var a:array[1..20,1..20]of integer; n,i,j,sum,k,x:integer; begin clrscr; write('Vvedite razmernost matricy n= ');readln(n); randomize; Writeln('Matrica:'); for i:=1 to n do begin for j:=1 to n do begin a[i,j]:=random(21)-10; write(a[i,j]:4); end; writeln; end; readln; for i:=1 to n do begin sum:=0; for j:=1 to n do begin sum:=sum+a[i,j]; a[i,n+1]:=sum; end; end; for i:=1 to n-1 do for k:=1 to n-1 do if a[k,n+1]>a[k+1,n+1] then begin for j:=1 to n+1 do begin x:=a[k,j]; a[k,j]:=a[k+1,j]; a[k+1,j]:=x; end; end; for i:=1 to n do begin for j:=1 to n do write(a[i,j]:4); writeln; end; readln end. Вариант 2: Код:
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 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. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#5
|
||||
|
||||
Насколько я понимаю, это не Быстрая сортировка...
|