Главная » 2020 » Февраль » 28 » Массив. Слияние упорядоченных массивов
11:10
Массив. Слияние упорядоченных массивов

#include <iostream>
#include <ctime>
using namespace std;
void vvod(int *x, int m);
void vivod(int *x, int m);
int max(int *x, int m);
int min(int *x, int m);
int nomer(int *x, int m, int chislo);
void vozr2(int *x, int m);
void MaxMin(int *x1, int m1,int *x2, int m2);
void SliyanUpor(int *x1, int m1,int *x2, int m2);
void SliyanUpor2(int *x1, int m1,int *x2, int m2);
int main(){
    srand(time(0));
    const int n1=10,n2=15;
    int *a=new int[n1];
    int *b=new int[n2];
    vvod(a,n1); vivod(a,n1);
    vvod(b,n2); vivod(b,n2);
    SliyanUpor2(a,n1,b,n2);
    delete a,b;
    system("pause");
    return 0; 
}
void SliyanUpor2(int *x1, int m1,int *x2, int m2)
{
    int *temp=new int[m1+m2]; 
    int k=0;
    for (int i=0;i<m1;i++,k++) temp[k]=x1[i];
    for (int i=0;i<m2;i++,k++) temp[k]=x2[i];
    vozr2(temp,m1+m2); vivod(temp,m1+m2);
    delete temp;
}
void SliyanUpor(int *x1, int m1,int *x2, int m2)
{
    vozr2(x1,m1);
    vozr2(x2,m2);
    int i1=0,i2=0;
    while ((i1<m1)&&(i2<m2)){
        if (x1[i1]<=x2[i2]) {
            cout<<x1[i1]<<" "; i1++;
        }
        else { cout<<x2[i2]<<" "; i2++;
        }
    }
    if (i1==m1) for ( ;i2<m2;i2++) cout<<x2[i2]<<" ";
    if (i2==m2) for ( ;i1<m1;i1++) cout<<x1[i1]<<" ";
    cout<<endl;
}
void MaxMin(int *x1, int m1,int *x2, int m2)
{
    int Max1=max(x1,m1), Max2=max(x2,m2);
    int Min1=min(x1,m1), Min2=min(x2,m2);
    cout<<"Max A="<<Max1<<" Max B="<<Max2<<endl;
    cout<<"Min A="<<Min1<<" Min B="<<Min2<<endl;
    if (Max1>Max2) cout<<"Max A > Max B"<<endl;
        else if (Max1<Max2) cout<<"Max A < Max B"<<endl;
            else cout<<"Max A = Max B"<<endl;
    if (Min1>Min2) cout<<"Min A > Min B"<<endl;
        else if (Min1<Min2) cout<<"Min A < Min B"<<endl;
            else cout<<"Min A = Min B"<<endl;
}
void vozr2(int *x, int m)
{
    int mi,nmin;
    for (int k=0;k<m;k++)
    {
        mi=min(x+k,m-k); 
        nmin=nomer(x+k,m-k,mi);
        x[nmin+k]=x[k]; x[k]=mi;
    }    
}
void vvod(int *x, int m)
{
    for (int i=0;i<m;i++) x[i]=rand()%90+10;
}
void vivod(int *x, int m)
{
    for (int i=0;i<m;i++) cout<<x[i]<<" ";
    cout<<endl;
}
int nomer(int *x, int m, int chislo)
{
    int n=0;
    for (int i=0;i<m;i++)
        if (x[i]==chislo)
        {
            n=i; break;
        }
    return n;
}
int min(int *x, int m){
    int MIN=x[0];
    for (int i=0;i<m;i++)
        if (x[i]<MIN) MIN=x[i];
    return MIN;
}
int max(int *x, int m){
    int MAX=x[0];
    for (int i=0;i<m;i++)
        if (x[i]>MAX) MAX=x[i];
    return MAX;
}

Просмотров: 263 | Добавил: denjes | Рейтинг: 0.0/0
Всего комментариев: 0
avatar