Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лаба № 1 «сортировка 3 Методами» По Информатике (Попов Д. И

.).cpp
Скачиваний:
8
Добавлен:
07.10.2014
Размер:
4.83 Кб
Скачать
#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");



}