در این روش مرتب سازی، شیوه کار بدین صورت است که محل بزرگترین عنصر را در درون آرایه nعنصری مورد نظر مییابیم و جای آن را با عنصر آخر یعنی an عوض میکنیم؛ سپس بین عناصر a1 تا an-1 محل بزرگترین عنصر را (که در واقع دومین عنصر بزرگ آرایه اصلی خواهد بود) بهدست میآوریم و جای آن را با عنصر an-1 عوض میکنیم. این کار را n-1 بار تکرار میکنیم. در این صورت در تکرار آخر فقط دو عنصر a1 و a2 را خواهیم داشت که باید بزرگترین آن دو در خانه a2 قرار گیرد.
برتری این روش نسبت به روش مرتبسازی حبابی آن است که تعداد تعویض عناصر کمتر میشود، زیرا در این روش، در هر تکرار حداکثر یکبار جابهجایی انجام میگیرد.
v مثال ۷ـ۱۳ تابع زیر آرایه n عنصری Aرا به روش انتخابی مرتب میکند.
void SelectionSort (int a[ ] , int n)
{
int i , max , temp ;
for (i = 1 ; i<n ; + + i)
{
max = 0 ;
for (j =1 ; j<= n-i+1 ; + + j)
if (A[ j] > A[max])
max = j ;
if (max != n-i)
{
temp = A[max] ;
A[max] = A[n-i] ;
A[n-i] = temp ;
}
}
}
دیدگاهها بسته شدهاند.