الگوریتم حبابی چیست و برنامه مرتب سازی حباب با زبان فرترن
مرتب سازی حبابی یک الگوریتم اساسی برای مرتب کردن رشتهای از اعداد یا عناصر دیگر به ترتیب صحیح است. این روش با بررسی هر مجموعه از عناصر مجاور در رشته، از چپ به راست و تغییر موقعیت آنها در صورت نامرتب بودن کار میکند. سپس الگوریتم این فرایند را تکرار میکند تا زمانی که بتواند در کل رشته اجرا شود و هیچ دو عنصری را که نیاز به تعویض دارند، پیدا نکند.
مرتبسازی حبابی چگونه عمل می کند؟
اگر یک برنامه نویس یا تحلیلگر بخواهد مجموعه ای از اعداد را به ترتیب صعودی مرتب کند، روش مرتب سازی حباب مانند مثالی است که در اینجا نشان داده شده است.
الگوریتم دو مورد را در یک زمان بررسی میکند، مواردی را که قبلاً به ترتیب صعودی از چپ به راست نبودهاند، مرتب میکند و سپس به چرخش در کل دنباله ادامه میدهد تا زمانی که یک پاس را بدون تغییر اعداد تکمیل کند.
به زبان دیگر:
این الگوریتم با تکرار بر روی فهرستی از دادهها، مانند یک آرایه، کار میکند و عناصری را که در کنار هم قرار گرفتهاند مقایسه میکند تا بررسی کند که آیا نظم ندارند یا خیر. الگوریتم عناصری را که نامرتب هستند یکی یکی با مرور لیست عوض می کند. هر بار که الگوریتم از لیست عبور می کند، “پاس” نامیده می شود. الگوریتم ادامه می یابد و از لیست عبور می کند تا زمانی که همه موارد مرتب شوند. مهم نیست که الگوریتم فقط عناصری را که در کنار هم در لیست قرار دارند عوض می کند و نه بیشتر.
چگونه مدیران محصول می توانند از مرتب سازی حباب استفاده کنند؟
یکی از ضروری ترین و دشوارترین مسئولیت های مدیر محصول این است که ابتکارات رقیب را بسنجید و تصمیم بگیرد که زمان و منابع محدود تیم را کجا متمرکز کند.
برای مثال، تیمهای محصول هزینهها را در مقابل مزایای اقلام عقبافتاده وزن میکنند تا تصمیم بگیرند کدام اقلام در نقشه راه محصول جایگاهی کسب کنند. آنها همچنین برای تعیین میزان تلاش و زمان مورد نیاز برای تکمیل آن، به هر یک از آیتم های عقب مانده امتیاز داستان اختصاص می دهند.
برای همه این نوع ابتکارات امتیازدهی، مدیران محصول باید یک رویکرد مرتبسازی را برای تعیین نحوه اولویتبندی کار تیم خود اعمال کنند. برای این نوع مرتبسازی، یک روش مرتبسازی حبابی ساده منطقی است.
توضیح در مورد کد فرترن:
این کد بعد از دیباگ شدن، از استفاده کننده تعداد اعدادی که میخواهد مرتب سازی آن ها را انجام دهد، دریافت میکند. سپس به تعداد عددی که اول از یوزر دریافت کرده، ورودی ها را دریافت کرده و سپس بعد از رسیدن به عدد مورد نظر، اعداد مرتب شده را به یوزر نمایش می دهد.
بخواهیم دقیق تر بپردازیم
- ابتدا با implicit NONE تمامی اعلان های ضمنی را از برنامه حذف یا غیر فعال میکنیم.
- تمامی متغیر ها، محاسبات و جواب ها یعنی a,t را با دستور Real در محدوده اعداد حقیقی قرار می دهیم و همچنین بعد از متغیر های i,j,n را با دستور integer در محدوده اعداد صحیح قرار می دهیم.
- در خط 3 عدد داخل پارانتز ماکزیمم تعداد عددی هست که کد میتواند بگیرد و با استفاده از الگوریتم آن ها را مرتب کند، در صورت نوشتن عدد 5 در داخل پارانتز ولی وارد کردن 6 عدد برای محاسبه الگوریتم حباب، کد خطای بیشتر از تعداد ماکزیمم را چاپ میکند.
- در خط 13، چرخه و حلقه های دو در تو انقدر مقایسه اعداد مجاور خود را با استفاده از شرط نوشته شده ادامه می دهد تا دیگر جواب دو مقایسه عدد مجاور نیاز به تعویض نداشته باشند.
- دستور pause در آخر کد برای متوقف کردن کامپایلر در آخرین مرحله است تا کاربر بتواند نتایج را به صورت کامل مشاهده نماید.
کد فرترن:
PROGRAM sortarray implicit none real,dimension(9)::a real::t integer::i,j,n print*,"please enter number n digits" read*,n do i=1,n read*,a(i) end do do i=1,n do j=i+1,n if(a(i)>a(j)) then t=a(i) a(i)=a(j) a(j)=t end if end do end do do i=1,n print*,a(i) end do pause end program sortarray
نمونه کد + پیشنمایش نتیجه کد:
دیدگاهتان را بنویسید