منتديات الجلفة لكل الجزائريين و العرب - عرض مشاركة واحدة - lمساعدة مستعجلة من فضلكم في c++
عرض مشاركة واحدة
قديم 2011-12-18, 15:52   رقم المشاركة : 4
معلومات العضو
أخ المسلمين
عضو فعّال
 
إحصائية العضو










افتراضي

حتى انا نسيتها، و لم اتذكر الا طريقة tri par selection

مثلا اذا كان لدينا جدول به مثلا 5 خانات

1 2 3 4 5

نستعمل 2 بوكل

الاولى للانتقال من العنصر الاول الى الخامس
و الثانية للبحث عن اصغر عنصر في الخانات التي هي بعد مؤشر البوكل الاولى، مثلا يدويا :


1 2 3 4 5

5 3 1 9 7

نبدأ بالعنصر الاول و نقارن معه جميع القيم للحصول على القيمة الصغرى
i=1;min=i
j=2
t[j] < t[i] ->min=j


i=1;min=i
j=3
t[j] < t[i] ->min=j


i=1;min=i
j=4
t[j] > t[i


i=1;min=i
j=5
t[j] > t[i



tmp=t[i
t[i=t[min
t[min=tmp



بعد انتهاء بوكل جي، يكون لدينا اصغر عنصر في الخانة الاولى (أي i)

و هكذا من اجل الخانة الثانية و الثالثة ... حتى ما قبل الاخيرة، لانه في الخانة ما قبل الاخيرة يكون لدينا خانتين، اي الاصغر في ماقبل الاخيرة، و الاكبر في الخانة الاخيرة

و البرنامج يكون كالتالي:

كود:
#include <iostream>

using namespace std;

int main(int argc,char** argv)
{
    int* tab;
    int size;

    cout << "Entrer la taille du tableau" << endl;
    cin >> size;

    tab = new int[size];

    for(int i=0;i<size;i++)
    {
        cout << "Entrer tab[" << i+1 << "] : ";
        cin >> tab[i];
    }

    int min,tmp;
    for(int i=0;i<(size-1);i++)
    {
        min = i;
        for(int j=i+1;j<size;j++)
        {
            if( tab[j] < tab[min] )
                min = j;
        }
        tmp = tab[i];
        tab[i] = tab[min];
        tab[min] = tmp;
    }

    cout << "tableau triee est :" << endl;
    for(int i=0;i<size;i++)
        cout << tab[i] << "\t";
    cout << endl;
    delete[](tab);
    return(0);
}
بالنسبة للجزء الثاني من التمرين حاول القيام به، فهو سهل، اذا لم تستطع ساضعه












رد مع اقتباس