Задание№5
Цель:Отсортировать массив чисел Челночным методом function[x]=chelnok(x) n=length(x); for I = 1: (n-1); % перебираются все элементы от первого % до предпоследнего if x(I) > x(I+1) % если условие упорядочения массива % не выполнено for J = I: -1: 1 % откат назад от текущего элемента до первого if x(J) > x(J+1) % и при необходимости перестановка buff = x(J); x(J) = x(J+1); x(J+1) = buff; end; end; end; end; x=[5 46 85 10 2] chelnok(x) ans =2 5 10 46 85 2)Методом «Пузырька» function[x]=pyzyr(x) n=length(x); J = n - 1; % устанавливается начальное значение % правой "границы" сортировки while J ~= 0 % пока эта граница не совпала с началом массива for I = 1: J % перебираются все элементы с 1-го % до "границы" сортировки if z(I) > z(I-1) % если условие упорядочения массива % не выполнено, то два соседних buff = z(I); % меняются местами z(I) = z(I-1); z(I-1) = buff; end; end; J = J - 1; % "граница" сортировки сдвигается влево end;
end x=[5 46 85 10 2] pyzyr(x) ans =2 5 10 46 85 Методом слияния function [z]= vmeste(x,y) n=length(x); m=length(y); I=1;J=1;K=1; x=chelnok(x); y=chelnok(y); while (I<=m) && (J<=n) if x(I)<=y(J) z(K)=x(I); I=I+1; else z(K)=y(J); J=J+1; end; K=K+1; end while I<=m z(K)=x(I); I=I+1; K=K+1; end while J<n z(K)=y(J); J=J+1; K=K+1; end;
x=[5 46 85 10 2] y=[26 88 74 97 12] >> vmeste(x,y) ans =2 5 10 12 26 46 74 85 88 97 Методом Вставки function [x] = vybor(z) n=length(z); x=z; for k=2:n m=k-1; if x(k)<x(m) r=x(k); while(m>0)&&(r<x(m)) x(m+1)=x(m); m=m-1; end x(m+1)=r; end; end vybor(z) ans =2 5 10 46 85
|