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);
}
بالنسبة للجزء الثاني من التمرين حاول القيام به، فهو سهل، اذا لم تستطع ساضعه
|
|
|