الگوریتم مرتب سازی انتخابی

معرفی و پیاده سازی الگوریتم مرتب سازی انتخابی

روش کار الگوریتم مرتب سازی انتخابی به این صورت است که اولین خانه با لیست مقایسه می شود، اگر در لیست کمتر از آن وجود داشته باشد جای آنها عوض می شود. این روند تا آخر ادامه پیدا می کند تا لیست کاملا مرتب شود.

این الگوریتم برای مجموعه داده‌های بزرگ مناسب نیست چون پیچیدگی سناریوهای حالت متوسط و بدترین حالت آن برابر با (Ο(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 

منبع:

Tutorials Point

Geeks For Geeks