• مرتب سازی انتخابی در ++C
    #1
    Note 
    روش مرتب سازی انتخابی (Selection Sort) یکی از روش های اولیه مرتب سازی بر اساس مقایسه عناصر است. این الگوریتم طی چند مرحله عناصر لیست را به صورت صعودی یا نزولی مرتب می کند. به این ترتیب که در هر مرحله با بررسی عناصر نامرتب، بزرگترین (یا کوچکترین) عنصر را پیدا کرده، و به انتهای لیست منتقل می کند.

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

    کد:
    2 8 4 1 7

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

    کد:
    1)    2 8 4 1 7    ->    2 7 4 1 8

    در مرحله دوم، پیمایش از ابتدای لیست تا عنصر چهارم صورت گرفته، و بزرگترین عنصر با عنصر انتهای آن جابجا می شود:

    کد:
    2)    2 7 4 1 8    ->    2 1 4 7 8

    علت این که چرا عنصر پنجم بررسی نمی شود کاملا مشخص است. این عنصر در مرحله قبل به عنوان بزرگترین عنصر به انتهای لیست منتقل شده است، و به طور حتم نیاز به جابجایی ندارد.
    در مرحله سوم، عناصر اول تا سوم بررسی شده و بزرگترین عنصر به انتهای آن منتقل می شود:


    کد:
    3)    2 1 4 7 8    ->    2 1 4 7 8

    و در مرحله آخر دو عنصر باقیمانده مقایسه می شوند:

    کد:
    4)    2 1 4 7 8    ->    1 2 4 7 8

    و به این ترتیب لیست مرتب می شود.

    منبع مطلب: الگوریتمستان - مرتب‌سازی انتخابی

    کد مرتب سازی انتخابی:

    [CPP]#include<iostream.h>
    #include<iomanip.h>

    int loc=0;
    int min(int sort[],int k);
    int main()
    {
    char ch;
    do
    {
    int select[8],k,c,temp;
    cout<<"www.softafzar.net\nEnter 8 elements of array to sort:"<<endl;
    for (int i=0;i<8;i++)
    {
    cin>>select[i];
    }
    cout<<endl;
    for(k=0;k<8;k++)
    {
    c=min(select,k);
    temp=0;
    temp=select[k];
    select[k]=select[loc];
    select[loc]=temp;
    }
    cout<<"array after sort"<<endl;
    for ( i=0;i<8;i++)
    {
    cout<<select[i]<<'\t';
    }
    cout<<endl;
    cout<<"do you want to sort more array? y/n"<<endl;
    cin>>ch;
    }
    while(ch=='y');
    return 0;
    }


    int min(int sort[],int k)
    {
    int mini;
    mini=sort[k];
    loc=k;
    for(int j=k+1;j<=7;j++)
    {
    if(mini>sort[j])
    {
    mini=sort[j];
    loc=j;

    }
    }
    return mini;
    }

    [/CPP]

    پاسخ
    ایجاد موضوع جدید   پاسخ به موضوع  

    موضوعات مرتبط با این موضوع...
    موضوع نویسنده پاسخ بازدید آخرین ارسال
    Note کد مرتب سازی حبابی در ++C xMAN 0 608 15-02-2014 ساعت 19:12
    آخرین ارسال: xMAN
    Note کد شبیه سازی ضرب با جمع کردن اعداد! Daniel 0 1,008 10-07-2012 ساعت 02:08
    آخرین ارسال: Daniel
    Note مرتب سازی حبابی در ++c SOFTAFZAR 0 484 02-07-2012 ساعت 09:20
    آخرین ارسال: SOFTAFZAR

    کاربرانِ درحال بازدید از این موضوع:   1 مهمان