فرض کن اعداد 5،2،4،7،1،3،2،6 به ما داده شده، ابتدا باید اعداد سمت راست و بعد اعداد سمت چپ را مرتب کنیم، یعنی 5،2،4،7 را مرتب می کنیم برای مرتب کردن این قسمت نیز ابتدا سمت چپ بعد سمت راست را مرتب می کنیم، یعنی اول 5،2 را مرتب می کنیم برای مرتب کردن این قسمت نیز ابتدا سمت چپ و بعد سمت راست را مرتب می کنیم یعنی اول 5 و بعد 2 ! 5 مرتب است، 2 هم همین طور! حالا که سمت راست و چپ مرتب است پس حالا وقت ادغام کردن است 2 و 5 را مقایسه می کنیم 2 از 5 کوچکتر است پس آن را قبل از 5 قرار می دهیم 2،5 مرتب شد سمت راست رو هم به همین طریق مرتب می کنیم حالا 2،5 و 4،7 رو با هم ادغام می کنیم ، دو عدد اول رو با هم مقایسه می کنیم 2 از 4 کوچکتر است 2 را بر می داریم، بعد 5 و 4 را مقایسه می کنیم چون 4 کوچکتر است، 4 را برمی داریم بعد 5 و 7 را مقایسه می کنیم و چون 5 کوچکتر است آن را برمی داریم و آخر سر هم که فقط 7 باقی مانده پس آن را برمی داریم ، ترتیب اعداد به این صورت شد 2،4،5،7 که اعداد مرتب شده هستند این کار را همین طور ادامه می دهیم تا کل اعداد مرتب شوند.
اگه بازم جاییش رو متوجه نشدی، بگو دقیقا کجاش، تا توضیح بدم...
این چیزی که می گی شبیه set توی STL در ++C هستش، که همیشه یه آرایه ی مرتب شده داریم و اگه یه چیزی بخوایم توش قرار بدیم به صورت مرتب شده قرار می ده در مورد Set می دونم که با زمان insert ، log n می کنه و می دونم که از Red-Black Tree استفاده می کنه اما خودم الگوریتمش رو بلد نیستم، فکر کنم اگه از اون استفاده کنی خوب باشه2) اگه ما یکسری شماره مرتب داشته باشیم و ناگهان شماره ای جدید وارد شود چه الگوریتمی sort طوری که در کوتاهترین زمان به نتیجه برسیم مناسب است
محاسبه ی Order الگوریتم ها خودش یه بحث طولانیه که اگه تو کتابا بگردی می تونی چیزای زیادی در موردش یاد بگیری و در کل به نظرم یه چیزه تجربیه! هر چی Order الگوریتم های بیشتری رو حساب کنی بیشتر دستت راه میفته3)//کلا محاسبه order الگوریتمها خصوصا این الگوریتم چگونه است
در مورد این الگوریتم هم Orderش N log N هستش






پاسخ با نقل قول
