خوارزمية الاختيار
خَوَارِزمِيَّةُ الاِختِيَارِ (بالإنجليزية: selection algorithm) هي خوارزمية لإيجاد مكان عدد بالترتيب حسب التصنيف، وتعد هذه الخوارزمية من أشهر الخوارزميات لأنه يمكن تطبيقها بزمن خطي ولاستخداماتها المتعددة في علوم الحاسوب والطريقة التي تتم بها عن طريق الاستدعاء الذاتي أو recursion مقدمةخوارزمية الاختيار هي طريقة بحث فعّـالة حيث تُعطَى الخوارزمية عدد i, والهدف هو إيجاد العدد ال-i في القائمة بعد التصنيف -SORTING- هناك عدة طرق لإيجاد هذا الهدف وقد تم التوصل إلى خوارزمية فعالة بزمن خطي - linear time algorithm- حالات خاصةعندما يكون i=1 عندها على الخوارزمية إيجاد العدد الأول من حيث الترتيب أي اصغر قيمة في القائمة وهذه المهمة بسيطة جدا وإيجاد هذه القيمة يتم عن طريق بحث خطي مع متغيِّر إضافيّ وها هي طريقة لفعل هذا: int FindMin(int[] A)
{
int min=A[0];
for(int j=1;j<=A.length;j++)
{
if(A[j]<A[0])
{
min=A[j];
}
}
return min;
}
وحالة أخرى هي i=n وعندها يجب ايجاد القيمة الكبرى وبطريقة مشابهة لايجاد القيمة الصغرى. اختيار بالتصنيفنبدأ أولا بالطريقة السهلة وهي تتم عن طريق تحويل الاختيار إلى تصنيف ثم التوجه للعدد المطلوب أي: int select(int[] A,int i)
{
return (A.sort())[i]
}
هذه الطريقة صحيحة ولكن الوقت الذي تحتاجه هو: ((O(nlog(n ونريد ان نصل لخوارزمية فعالة بوقت خطي بالنسبة للمدخل! الخوارزمية الخطيةهذه الخوارزمية تستخدم طريقة الاستدعاء الذاتي (العودية) وهي كالتالي: اسم هذه الخوارزمية سيكون: اختيار
تحليل زمن الخوارزمية
وصلات خارجية
|