PDA

View Full Version : سوال: درج عنصر در ارایه مرتب شده



nokhodi
جمعه 20 دی 1392, 13:05 عصر
یک ارایه 100 تایی رو 50 تا عنصر دادیم و با مرتب سازی حبابی مرتب کردیم...
حالا میخوایم یک عدد از کاربر بگیریم و در جای خودش قرار بدیم؟

راه غیر مهندسی من اینه که عدد رو به انتهای ارایه اضافه کنه و بعد دوباره ارایه رو مرتب کنه

روش بهتر و علمی تر میشه بهم معرفی کنید؟!


سپاس

nokhodi
جمعه 20 دی 1392, 15:11 عصر
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
int x[10],i,j,t,m,n=10,k;

cout<< "baraye etmame vorode adad 00 ra vared konid"<<"\n";
for(int i=0;i<10;i++)
{
cout<< "arry 1 - ["<<i<<"] : ";
cin>>m;
if (m==00)
break;
else
x[i]=m;
k=i;

}

//////////////////////////// SORT ///////////////////////////////////

for( i = n - 2 ; i >= 0 ; i-- )
{
for( j = 0 ; j <= i ; j++ )
{
if( x[ j ] > x[ j + 1 ] )
{
t = x[ j ];
x[ j ] = x[ j + 1 ];
x[ j + 1 ] = t;
}
}
}
///////////////////////////////////////////////////////////////
cout<<"******************************\n";
for(int i=0;i<5;i++)
cout<<x[i]<<"\n";
/////////////////////////// input digit ///////////////////////////

cout<< "arry 1 - ["<<k+1<<"] : ";
cin>>x[k+1];

//////////////////////////// SORT AGIN ///////////////////////////////////

for( i = n - 2 ; i >= 0 ; i-- )
{
for( j = 0 ; j <= i ; j++ )
{
if( x[ j ] > x[ j + 1 ] )
{
t = x[ j ];
x[ j ] = x[ j + 1 ];
x[ j + 1 ] = t;
}
}
}
///////////////////////////////////////////////////////////////
cout<<"******************************\n";
for(int i=0;i<5;i++)
cout<<x[i]<<"\n";

getchar();
}



اون روشی که تو ذهنم بود رو پیاده سازی کردم اما جواب نمیده :(

elyas74
شنبه 21 دی 1392, 20:15 عصر
میتونی با یک for توی آرایه پیش بری و وقتی که به موقعیتی که اون عدد باید باشه رسیدی ، اون جا با شیفت کردن یک خونه باز کنی و بزاری داخلش عددُ

omidshaman
شنبه 21 دی 1392, 20:25 عصر
روش بهتر استفاده از درخت باینریه(Binary search tree )