در این مقاله، روشی برای تعویض دو بلوک حافظه غیر مجاور با استفاده از تکرارگرهای یکجهته ارائه شده است. این روش شامل حذف بلوکهای غیرمربوط (مانند A و E) و سپس شروع از ابتدای بلوکهای B و D است. با جابجایی عناصر اولیه از B و D به صورت متوالی، تا زمانی که یکی از بلوکها تمام شود، میتوان این کار را انجام داد. در صورتی که بلوک B بزرگتر از بلوک D باشد، یک چرخش با استفاده از الگوریتم چرخش یکجهته موجود انجام میشود. اگر بلوک D بزرگتر باشد، یک چرخش دیگر برای قرار دادن mid در ابتدای بلوک انجام میشود. در نهایت، اگر تعداد عناصر B و D برابر باشد، تعویض کامل میشود و نیازی به چرخش اضافی نیست. این الگوریتم با n تعویض کار میکند.
مشاهده مطلب اصلی