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 )
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.