برنامه مرتب‌ سازی حبابی (Bubble sort) در زبان برنامه نویسی C , ++C

برنامه مرتب‌ سازی حبابی (Bubble sort) در زبان برنامه نویسی ++ C , C

 

یکی از روش‌های مرتب‌سازی، روش مرتب‌سازی حبابی (Bubble Sort) است که به آن روش تعویض استاندارد (Standard Exchange) نیز می‌گوینداین روش شامل چند مرحله است که در هر مرحله یک عنصر از لیست به طور قطع در محل مناسب خود قرار می‌گیرد.

لیست زیر را در نظر بگیرید که می‌خواهیم به صورت صعودی (از کوچک به بزرگمرتب کنیم:

۴  ۳  ۸  ۱  ۶  ۲

عنصر اول را با دومی مقایسه کرده و در صورتی که اولی بزرگتر باشد، جای آنها را تعویض می‌کنیم:

۱ – ۱)    ۴  ۳  ۸  ۱  ۶  ۲        ۳  ۴  ۸  ۱  ۶  ۲

همین کار را با عناصر دوم و سوم انجام می‌دهیم:

۱ – ۲)    ۳  ۴  ۸  ۱  ۶  ۲        ۳  ۴  ۸  ۱  ۶  ۲

و همینطور عناصر سوم و چهارم:

۱ – ۳)    ۳  ۴  ۸  ۱  ۶  ۲        ۳  ۴  ۱  ۸  ۶  ۲

و الی آخر:

۱ – ۴)    ۳  ۴  ۱  ۸  ۶  ۲        ۳  ۴  ۱  ۶  ۸  ۲

۱ – ۵)    ۳  ۴  ۱  ۶  ۸  ۲    →    ۳  ۴  ۱  ۶  ۲  ۸

زمانی که به انتهای لیست رسیدیم، بزرگترین عنصر بین داده‌ها به انتهای لیست منتقل شده است.

در مرحله‌ی بعد، مجددا از ابتدا شروع کرده و تا انتها ادامه می‌دهیماما با توجه به این که به طور قطع عنصر nام در جای اصلی خود قرار دارد، تا عنصر (n – 1)ام پیش می‌رویمدر پایان این مرحله، بزرگترین عدد در لیست نامرتب باقیمانده، به انتهای آن منتقل می‌شود که دومین عدد از نظر بزرگی در کل لیست است:

۲ – ۱)    ۳  ۴  ۱  ۶  ۲  ۸    →    ۳  ۴  ۱  ۶  ۲  ۸

۲ – ۲)    ۳  ۴  ۱  ۶  ۲  ۸    →    ۳  ۱  ۴  ۶  ۲  ۸

۲ – ۳)    ۳  ۱  ۴  ۶  ۲  ۸    →    ۳  ۱  ۴  ۶  ۲  ۸

۲ – ۴)    ۳  ۱  ۴  ۶  ۲  ۸    →    ۳  ۱  ۴  ۲  ۶  ۸

در هر مرحله، طول بازه‌ای که مرتب‌سازی روی آن انجام می‌گیرد، یک واحد کم شده و در نتیجه تعداد گام‌ها نیز یک گام کمتر می‌شود:

۳ – ۱)    ۳  ۱  ۴  ۲  ۶  ۸    →    ۱  ۳  ۴  ۲  ۶  ۸

۳ – ۲)    ۱  ۳  ۴  ۲  ۶  ۸    →    ۱  ۳  ۴  ۲  ۶  ۸

۳ – ۳)    ۱  ۳  ۴  ۲  ۶  ۸    →    ۱  ۳  ۲  ۴  ۶  ۸

۴ – ۱)    ۱  ۳  ۲  ۴  ۶  ۸    →    ۱  ۳  ۲  ۴  ۶  ۸

۴ – ۲)    ۱  ۳  ۲  ۴  ۶  ۸    →    ۱  ۲  ۳  ۴  ۶  ۸

۵ – ۱)    ۱  ۲  ۳  ۴  ۶  ۸    →    ۱  ۲  ۳  ۴  ۶  ۸

در پایان این مراحل، لیست مرتب شده است.

در مراحل مختلف، عناصر بزرگ رفته رفته به انتهای لیست و محل اصلی خود حرکت می‌کنندمانند حباب آبی که از درون آب به سمت سطح آن حرکت می‌کندبه همین دلیل این روش مرتب‌سازی را مرتب‌سازی حبابی نامیده‌اند.

پیاده‌سازی مرتب‌سازی حبابی در ++C

سورس مرتب‌سازی حبابی به زبان c++ به شرح زیر است:

#include <iostream>

int main()

{

int len=10;

int a[len],i,j,temp;

for(i=0;i<len;i++)

{

std::cin>>a[i];    // دریافت اعضای آرایه (لیست مورد نظر) برای مرتب‌سازی

}

for(i=len-2;i>=0;i–)

{

for(j=0;j<=i;j++)

{

if(a[j]>a[j+1])   //مقایسهٔ تک به تک هر عضو آرایه با عضو کناری

{

temp=a[j];  //و جابه‌جایی اعضا یا یکدیگر در صورت برقراری شرط

a[j]=a[j+1];

a[j+1]=temp;

}

}

}

for(i=0;i<len;i++)

{

std::cout<<a[i];   //چاپ اعضا

}

return 0;

}

پیاده‌سازی مرتب‌سازی حبابی در  C

این سورس یک عدد گرفته و به تعداد همان عدد از ورودی دریافت می‌کند و آن‌ها را با روش Bubble sort مرتب می‌کند.

 

پیچیدگی زمانی مرتب‌سازی حبابی

فرض کنیم لیستی با n عنصر با روش مرتب‌سازی حبابی مرتب می‌شوندعمل اصلی روش‌های مرتب‌سازی مبتنی بر مقایسه، مقایسه‌ها هستنددر مرحله‌ی اول، n – 1 مقایسه صورت می‌گیرد، تا بزرگترین عنصر به انتهای لیست منتقل شوددر مرحله‌ی دوم، n – 2 مقایسه و به همین ترتیب، در مرحله‌ی iام (i < n) تعداد n – i مقایسه صورت می‌گیرداین تعداد را می‌توان از کد برنامه‌نویسی ذکر شده‌ی فوق هم استخراج کردپس تعداد کل مقایسه‌ها برای مرتب کردن nعنصر برابر است با:

T(n)=(n۱)+(n۲)+(n۳)++۲+۱=n(n۱)/۲

بدترین حالت

این الگوریتم در بدترین حالت از مرتبهٔ Θ(n۲ است. چون در بدترین حالت هر عنصر باید n-1 بار فهرست را بپیماید.

بهترین حالت

بهترین حالت این است که فهرست مرتب شده‌باشد که در این حالت الگوریتم از مرتبه (O(n است.

درباره نویسنده:

فرستادن دیدگاه

گواهی پرداخت آنلاین سایت دنیا فایل

پرداخت آنلاین سایت دنیا فایل توسط شرکت زرین پال انجام می‌شود. در صورت بروز هرگونه مشکل پیش آمده در هنگام خرید با ایمیل contact-us@donyafile.ir در میان بگذارید.