Добавил:
Low
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лаба № 1 «сортировка 3 Методами» По Информатике (Попов Д. И
.).cpp#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
#include <math.h>
int main ()
{
int n, p;
clock_t begin,end;
float puzir, vstavka, vibor;
char el[]="\nВведите количество элементов: ",
prog[]="Методы сортировки массива\n",
pu[]="\nСортировка пузырьком\n",
iss[]="Сортировка Пузырём: ",
uss[]="Сортировка Выбором: ",
yss[]="Сортировка Вставками: ",
pis[]="пузырь/выбор",
piss[]="выбор/вставка",
pisss[]="пузырь/вставка",
li[]="Готово\n",
it[]="Вывести результаты (y/n)?: ",
vi[]="\nСортировка выбором\n",
prost[]="\nСортировка вставками\n",
op[]="\nВведите 1 - по возрастанию, 2 - по убыванию: ";
CharToOem(uss,uss);
CharToOem(piss,piss);
CharToOem(pisss,pisss);
CharToOem(yss,yss);
CharToOem(pis,pis);
CharToOem(el,el);
CharToOem(op,op);
CharToOem(pu,pu);
CharToOem(iss,iss);
CharToOem(li,li);
CharToOem(prog,prog);
CharToOem(it,it);
CharToOem(vi,vi);
CharToOem(prost,prost);
printf(prog,prog);
printf(el);
scanf("%i", &n);
int mass[n], i, k, t, j, isk;
printf(op);
scanf("%i", &p);
for (i=1;i<n+1;i=i+1)
{
mass[i]=rand()%100+1;
}
int mass_puzyr[n], mass_vibor[n], mass_vstavka[n];
for (i=1; i<n+1; i=i+1)
{
mass_puzyr [i]=mass[i];
mass_vibor[i]=mass[i];
mass_vstavka[i]=mass[i];
}
if (p==1)
{
printf(pu);
begin=clock();
for (k=1;k<n;k++)
{
for (i=2;i<n+1;i++)
{
if (mass_puzyr[i]<mass_puzyr[i-1])
{
mass_puzyr[i-1]=mass_puzyr[i-1]+mass_puzyr[i];
mass_puzyr[i]=mass_puzyr[i-1]-mass_puzyr [i];
mass_puzyr[i-1]=mass_puzyr[i-1]-mass_puzyr [i];
}
}
}
end=clock();
printf(li);
puzir=(float)(end-begin)/100;
printf(vi);
begin=clock();
for (i=1;i<n+1;i++)
{
isk=mass_vibor[i];
for(k=i;k<n+1;k=k+1)
{
if(mass_vibor[k]<isk)
{
isk=isk+mass_vibor[k];
mass_vibor[k]=isk-mass_vibor[k];
isk=isk-mass_vibor[k];
}
}
mass_vibor[i]=isk;
}
end=clock();
printf(li);
vibor=(float)(end-begin)/100;
printf(prost);
begin=clock();
for(i=1;i<n+1;i++)
{
k=mass[i];
t=i-1;
while((k<mass_vstavka[t])&&(t>0))
{
mass_vstavka[t+1]=mass_vstavka[t];
t=t-1;
}
mass_vstavka[t+1]=k;
}
end=clock();
printf(li);
vstavka=(float)(end-begin)/100;
printf("\n%s: %.2f sec.\n", iss, puzir);
printf("%s: %.2f sec.\n", uss,vibor);
printf("%s: %.2f sec.\n\n", yss,vstavka);
float ter1, ter2, ter3;
ter1=puzir/vibor;
ter2=vibor/vstavka;
ter3=puzir/vstavka;
printf("\t%s=%f\n",pis,ter1);
printf("\t%s=%f\n",piss,ter2);
printf("\t%s=%f\n\n",pisss,ter3);
char v;
printf(it);
scanf("%c", &v);
scanf("%c", &v);
do
{
printf(it);
scanf("%c", &v);
scanf("%c", &v);
if (v=='y')
{
printf ("%c\tIsh\tPuz\tVib\tVst\n", 35);
for(i=1;i<n+1;i++)
{
printf("%i\t%i\t%i\t%i\t%i\n",i,mass[i],mass_puzyr[i],mass_vibor[i],mass_vstavka[i]);
}
}
}
while ((v!='y')&&(v!='n'));
}
if (p==2)
{
printf(pu);
begin=clock();
for (k=1;k<n;k++)
{
for (i=2;i<n+1;i++)
{
if (mass_puzyr[i]>mass_puzyr[i-1])
{
mass_puzyr[i-1]=mass_puzyr[i-1]+mass_puzyr[i];
mass_puzyr[i]=mass_puzyr[i-1]-mass_puzyr [i];
mass_puzyr[i-1]=mass_puzyr[i-1]-mass_puzyr [i];
}
}
}
end=clock();
printf(li);
puzir=(float)(end-begin)/10000;
printf(vi);
begin=clock();
for (i=1;i<n+1;i++)
{
isk=mass_vibor[i];
for(k=i;k<n+1;k=k+1)
{
if(mass_vibor[k]>isk)
{
isk=isk+mass_vibor[k];
mass_vibor[k]=isk-mass_vibor[k];
isk=isk-mass_vibor[k];
}
}
mass_vibor[i]=isk;
}
end=clock();
printf(li);
vibor=(float)(end-begin)/100;
printf(prost);
begin=clock();
for(i=1;i<n+1;i++)
{
k=mass[i];
t=i-1;
while((k>mass_vstavka[t])&&(t>0))
{
mass_vstavka[t+1]=mass_vstavka[t];
t=t-1;
}
mass_vstavka[t+1]=k;
}
end=clock();
printf(li);
vstavka=(float)(end-begin)/100;
printf("\n%s: %.2f msec.\n",iss, puzir);
printf("%s: %.2f msec.\n",uss, vibor);
printf("%s: %.2f msec.\n\n",yss, vstavka);
float ter1, ter2, ter3;
ter1=puzir/vibor;
ter2=vibor/vstavka;
ter3=puzir/vstavka;
printf("%s=%f\n",pis,ter1);
printf("%s=%f\n",piss,ter2);
printf("%s=%f\n\n",pisss,ter3);
char v;
do
{
printf(it);
scanf("%c", &v);
scanf("%c", &v);
if (v=='y')
{
printf ("%c\tIsh\tPuz\tVib\tVst\n", 35);
for(i=1;i<n+1;i++)
{
printf("%i\t%i\t%i\t%i\t%i\n",i,mass[i],mass_puzyr[i],mass_vibor[i],mass_vstavka[i]);
}
}
}
while ((v!='y')&&(v!='n'));
}
printf("\n");
system("pause");
}
Соседние файлы в предмете Информатика