مرتب‌سازی انتخابی (Selection Sort)

مرتب‌سازی انتخابی: پیدا کردن کوچک‌ترین و گذاشتن در جایش؛ کمترین تعداد جابه‌جایی بین الگوریتم‌های ساده

مرتب‌سازی انتخابی چیست؟

Selection Sort در هر پاس، کوچک‌ترین عنصر باقی‌مانده را پیدا و در جای درستش (ابتدای بخش نامرتب) می‌گذارد.

الگوریتم

  1. بخش مرتب (اول خالی) و بخش نامرتب (کل لیست) داریم
  2. کوچک‌ترین عنصر بخش نامرتب را پیدا کن
  3. با اولین عنصر بخش نامرتب جابه‌جا کن
  4. مرز بخش مرتب یک خانه جلو می‌رود
  5. تکرار تا n−1 پاس

مثال گام‌به‌گام

[64, 25, 12, 22, 11]

پاس ۱: min=11 -> [11 | 25, 12, 22, 64]
پاس ۲: min=12 -> [11, 12 | 25, 22, 64]
پاس ۳: min=22 -> [11, 12, 22 | 25, 64]
پاس ۴: min=25 -> [11, 12, 22, 25 | 64]  ✓

پیچیدگی

معیارمقدار
مقایسه‌ها (همه حالات)O(n²) — همیشه n(n−1)/2
جابه‌جایی‌هاO(n) — حداکثر n−1 ✓
حافظهO(1) — درجا

ویژگی منحصربه‌فرد: کمترین جابه‌جایی!

برخلاف Bubble Sort که ممکن است هزاران جابه‌جایی کند، Selection Sort حداکثر n−1 جابه‌جایی دارد. وقتی هزینه نوشتن/جابه‌جایی بسیار بالاست (مثل حافظه فلش)، این ویژگی ارزشمند است!

مقایسه با Bubble Sort

ویژگیBubbleSelection
مقایسه‌هاO(n²)O(n²)
جابه‌جاییO(n²)O(n) ✓
بهترین حالتO(n) با بهینه‌سازیO(n²) همیشه!
پایدار✓✗
نکته: Selection Sort حتی روی داده مرتب هم O(n²) مقایسه می‌کند — چون همیشه باید کوچک‌ترین را با اسکن کامل پیدا کند!

جمع‌بندی

این مبحث بخشی از دوره آموزش کامل ساختار داده و الگوریتم است.

ابزارهای مرتبط