Упорядочить Одномерный Массив

  • Автор темы NadezdaM
  • Дата начала
N

NadezdaM

#1
Подскажите, пожалуйста,товарищи программисты,
как упорядочить по возрастанию в массиве кусок,который полностью совпадает с другим массивом.
C++:
# include<iostream.h>
const int n=4;
const int m=2;
void vvod( int x[n])// ввожу массив 1-ый
{
int i;
for( i=0;i<n;i++)
{
cout<<"x["<<i<<"]=";
cin>>x[i];
}
}
/////////////////////////////////////
void vvod1( int y[m])// // ввожу массив 2-ый
{
int j;
for( j=0;j<m;j++)
{
cout<<"y["<<j<<"]=";
cin>>y[j];
}
}
/////////////////////////////////////////
void show1(int y[n])//показываю массив 1-ый
{
int j;
for(j=0;j<n;j++)
{
cout<<y[j]<<' ';
}
}
////////////////////////////////////////////
void show2(int x[n])//показываю массив 2-ый
{ 
int i;
for(i=0;i<n;i++)
{
cout<<x[i]<<' ';
}
}
////////////////////////////////////////
bool EA(int x[n],int y[m])// проверяю есть и в 1-ом массиве 2-ой массив
{
bool b=false;
for(int i=0;(i<=n-m)&&!b;i++)
{
bool b2=true;
for(int j=0;j<m&&b2;j++)
{
if (x[i+j]!=y[j])
b2=false;
b=b2;
}
}
return b;
}
////////////////////////////////////////////////////
void upor( int x[n],int y[m])//пытаюсь упорядочить
{ 
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
if(x[i]==y[j])
{
for(int i=0;i<n-1;i++)
for(int t=i+1;t<m;t++)
if (x[i]>x[t])
{
int r=x[i];
x[i]=x[t];
x[t]=r;
}
}
}
}
///////////////////////////////////////////////////////////
void main()
{
int a[n],b[m];
cout<<"enter massiv x"<<endl;
vvod(a);
show1(a);
cout<<"enter massiv y"<<endl;
vvod1(b);
show2(b);
if (EA(a,b))
{
upor(a,b);
show1(a);
}
else 
cout<<"massiv x and y ne sovpadayt";
}
 
W

Whatka

#2
найди смещение по индексам
т.е. какой индекс у первого и последнего элементов куска массива

сортируй отдельный массив,а в месте где меняются местами элементы
меняй местами и элементы куска,учитывая смещение по индексам
 
R

rrrFer

#3
найди смещение по индексам
т.е. какой индекс у первого и последнего элементов куска массива
сортируй отдельный массив,а в месте где меняются местами элементы
меняй местами и элементы куска,учитывая смещение по индексам
хм
bool cmp(const int a, const int b)const { return a < b; }
//...
qsort(&a[idx], size, sizeof(int), cmp);

тут idx - индекс, о котором говорит вятка, size - длина второго массива, a - первый массив