Практика программирования (Бейсик, Си, Паскаль)



Сортировка больших массивов - часть 2


END IF

NEXT I

IF Q=l THEN GOTO *M

END SUB

Функция bubble.с

void bubble(int *x, int n) {

register int i,j;

int tmp;

for(i=l; i<n; i++)

for(j=n-l; j>=i; j—)

if<x[j-l] > x[j])

{

tmp=x[j-1] ;

x[j-l] = x[j];

x[j ] = tmp; } }

Функция bubblel.c

void bubblel(int *x, int n) {

register int i,j;

int tmp,q; m:q=0;

for(i=0; i<n-l; i++)

if(x[i] > x[i+l]) {

tmp=x[i];

x[i]=x[i+l];

x[i+l]=tmp;

q=l; }

if(q!=0) goto m; }

Процедура bubble.pas

procedure bubble(var x:array of integer;n:integer);

var

i,j,tmp:integer;

begin

for i:=l to n-1 do

for j:=n-l downto i do

if x[j]<x[j-l] then begin

tmp:=x[j-l]; x[j-l]:=x[j];

x[j]:=tmp;

end;

end;

Процедура bubblel.pas

procedure bubblel(var x:array of integer;n:integer);

label m;

var

i,tmp,q:integer;

begin m:q:=0

for i:=0 to n-2 do

if x[i] > x[i+l] then begin

tmp:=x[i];

x[i]:=x[i+l];

x [i+1] :=tmp;

q:=l; end;

if q=l then goto m;

end;

Сортировка методом отбора (select)

Идея метода отбора заключается в следующем. Находится элемент с наименьшим значением и меняется местами с первым элементом. Среди оставшихся ищется наименьший, который меняется со вторым, и т. д.

Подпрограмма select.bas

SUB SELECT(X(),N)

FOR I=0 TO N-2

Q=0: K=I: TMP=X(I)

FOR J=I+1 TO N-l

IF X(J)<TMP THEN K=J: TMP=X(J): Q=l NEXT J

IF Q=l THEN X(K)=X(I): X(I)=TMP NEXT I

END SUB

Функция select.с

void select(int *x, int n) {

register int i,j,k;

int q,tmp;

for(i=0; i<n-l; i++) {

q=0;

k=i;

tmp=x[ i ] ;

for(j=i+l; j<n; j++) {

if(x[j] < tmp) {

k=j;

tmp=x[ j ] ;

q=l; } } if (q)

{x[k]=x[i];

x[i]=tmp;} } }

Процедура select.pas

procedure select(var x:array of integer;n:integer);

var

i,j,k,q,tmp:integer;

begin

for i:=0 to n-2 do begin

q:=0;

k:=i;

tmp:=x[i];

for j:=i+l to n-1 do

if x[j]<tmp then begin

k:=j;

tmp:=x[j];

q:=l;

end;

if q=l then begin

x[k]:=x[i];

x[i]:=tmp;

end;

end;

end;

Сортировка методом вставки (insert)




Содержание  Назад  Вперед