روش کار الگوریتم مرتب سازی انتخابی به این صورت است که اولین خانه با لیست مقایسه می شود، اگر در لیست کمتر از آن وجود داشته باشد جای آنها عوض می شود. این روند تا آخر ادامه پیدا می کند تا لیست کاملا مرتب شود.
این الگوریتم برای مجموعه دادههای بزرگ مناسب نیست چون پیچیدگی سناریوهای حالت متوسط و بدترین حالت آن برابر با (Ο(n2 است که در آن n تعداد آیتمهای آرایه است.
طرز کار الگوریتم مرتبسازی انتخابی
حال می خواهیم آرایه زیر را مرتب نماییم.
مقدار اول که 14 می باشد را انتخاب می کنیم و سپس آرایه را جستجو می کنیم تا ببینیم آیا مقداری کمتر از آن وجود دارد یا نه. که 10 کمتر از 14 می باشد. بنابراین جای 14 و 10 را با هم عوض می کنیم.
سپس سراغ مقدار دوم یعنی 33 می رویم. و به همین روش پیدا می کنیم که 14 از 33 کمتر است و جای آن ها را عوض می کنیم.
شبه کد
procedure selection sort
list : array of items
n : size of list
for i = 1 to n - 1
/* set current element as minimum*/
min = i
/* check the element to be minimum */
for j = i+1 to n
if list[j] < list[min] then
min = j;
end if
end for
/* swap the minimum element with the current element*/
if indexMin != i then
swap list[min] and list[i]
end if
end for
end procedure
پیاده سازی الگوریتم مرتب سازی انتخابی در #C
// C# program for implementation
// of Selection Sort
using System;
class GFG
{
static void sort(int []arr)
{
int n = arr.Length;
// One by one move boundary of unsorted subarray
for (int i = 0; i < n - 1; i++)
{
// Find the minimum element in unsorted array
int min_idx = i;
for (int j = i + 1; j < n; j++)
if (arr[j] < arr[min_idx])
min_idx = j;
// Swap the found minimum element with the first
// element
int temp = arr[min_idx];
arr[min_idx] = arr[i];
arr[i] = temp;
}
}
// Prints the array
static void printArray(int []arr)
{
int n = arr.Length;
for (int i=0; i<n; ++i)
Console.Write(arr[i]+" ");
Console.WriteLine();
}
// Driver code
public static void Main()
{
int []arr = {64,25,12,22,11};
sort(arr);
Console.WriteLine("Sorted array");
printArray(arr);
}
}
// This code is contributed by Sam007
منبع: