تابعی برای مرتب سازی صعودی و نزولی آرایه عددی

mfahiminia

New Member
سلام

اگر بخواهیم برنامه ای بنویسیم که ارایه ای از اعداد رو مرتب کنه و عملیات مرتب سازی به صورت نزولی و

صعودی امکان پذیر باشه و برای نوشتن آن هم از اشاره گر به تابع استفاده کنیم.

البته باید از مرتب سازی حبابی استفاده کنیم و...ولی می شه یه کمک درمورد این برنامه بکنید.
خیلی ممنون:shock:
 

the_king

مدیرکل انجمن
در انتخاب عنوان تاپیک دقت کنید، عنوان تاپیک می بایستی مشخص کننده موضوع تاپیک باشد.

عنوان تاپیک ویرایش گردید.

سلام

اگر بخواهیم برنامه ای بنویسیم که ارایه ای از اعداد رو مرتب کنه و عملیات مرتب سازی به صورت نزولی و

صعودی امکان پذیر باشه و برای نوشتن آن هم از اشاره گر به تابع استفاده کنیم.

البته باید از مرتب سازی حبابی استفاده کنیم و...ولی می شه یه کمک درمورد این برنامه بکنید.
خیلی ممنون:shock:

آرایه ای که قرار مرتب بشه در خارج از تابع مرتب سازی تعریف شده و صرفا آدرس شروع آرایه بصورت یک
اشاره گر به تابع ارسال میشه (فراخوانی با ارجاع) و در نتیجه هر تغییری که درون تابع در جهت مرتب سازی آرایه
انجام خواهد شد منجر به تغییر آرایه اصلی خواهد شد یعنی تابع نیاز به ارسال خروجی خاصی نخواهد داشت.

در مثال زیر تابع ()sort سه پارامتر دارد :
پارامتر اول آرایه ای است که قرار است مرتب شود.
پارامتر دوم طول آرایه است، که در مثال ما 10 خانه است.
پارامتر سوم نوع مرتب سازی (صعودی و نزولی) است که به ترتیب با مقادیر 0 و 1 مشخص می شود.

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

کد:
#include <conio.h>
#include <iostream.h>

void sort(int a[], int n, int mode)
{
    int i, j, t;
    for (i = 0; i < n - 1; i++)
        for (j = i + 1; j < n; j++)
            if (((mode == 0) && (a[j] < a[i]))
            || ((mode == 1) && (a[j] > a[i])))
            {
                t = a[j];
                a[j] = a[i];
                a[i] = t;
            }
}

int main()
{
    int a[10] = {4, 1, 7, 6, 2, 9, 5, 3, 8, 0};
    int i;
    cout << endl << "Array      =" << endl;
    for (i = 0; i < 10; i++)
        cout << a[i] << " ";
    cout << endl << endl << "Ascending  =" << endl;
    sort(a, 10, 0);
    for (i = 0; i < 10; i++)
        cout << a[i] << " ";
    cout << endl << endl << "Descending =" << endl;
    sort(a, 10, 1);
    for (i = 0; i < 10; i++)
        cout << a[i] << " ";
    getch();
    return 0;
}
 
آخرین ویرایش:

جدیدترین ارسال ها

بالا