Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
вычислительная практика.docx
Скачиваний:
11
Добавлен:
13.11.2018
Размер:
97.39 Кб
Скачать

График функции

Вывод : исследовали функцию, Matlab довольно быстро справился с этой задачей что не мало важно в наше время.

Задание№5

Цель:Отсортировать массив чисел

1)Челночным методом

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

3)Методом слияния

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

4)Методом Вставки

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

Время затраченное на сортировку

T1=[];T2=[];T3=[];T4=[]; T5=[];

for n = [ 10000 : 10000 : 50000 ]; % меняется размерность массива данных

time = round( clock ); % определяется текущее время для инициализации

% датчика случайных чисел

rand( 'seed', time(5)*time(6) ); % осуществляется инициализация

% датчика случайных чисел

x = rand( 1, n ); % генерируется массив случайных чисел из диапазона

% [ 0 1 ]

x = round( 100*x ); % случайный массив целых двузначных чисел

%Выборка

tic;

z=vyborka(x);

t1=toc;

T1=[T1 t1];

plot(T1);

hold on

%Вставка

tic;

z=vybor(x);

t2=toc;

T2=[T2 t2];

plot(T2,'-g');

%Пузырек

tic;

z=pyzyr(x);

t3=toc;

T3=[T3 t3];

plot(T3,'-r');

%Челнок

tic;

z=chelnok(x);

t4=toc;

T4=[T4 t4];

plot(T4,'-k');

%sort

tic;

z=sort(x);

t5=toc;

T5=[T5 t5];

plot(T5,'-y');

end