Skip to content
GitHub

Sorting Algorithms

Data တွေကို ငယ်စဉ်ကြီးလိုက် (သို့) ကြီးစဉ်ငယ်လိုက် စီချင်တဲ့အခါ ဘယ်လို စီမလဲ?

ဒါကတော့ အူကြောင်ကြောင် အနိုင်ဆုံး နည်းလမ်းပါ။ ဘေးချင်းကပ်နေတဲ့ နှစ်ခုကို ယှဉ်မယ်။ နေရာမှားနေရင် လဲမယ် (Swap)။ ဒီလိုမျိုး အစအဆုံး အကြိမ်ကြိမ် လုပ်မယ်။

  • အရမ်းနှေးတယ်။ ($O(n^2)$)
  • လေ့လာသင်ယူဖို့အတွက်ပဲ ကောင်းတယ်။ လက်တွေ့ မသုံးသင့်ဘူး။

ဒါတွေက “Divide and Conquer” (ခွဲထုတ်ပြီးမှ အုပ်ချုပ်သည်) ဗျူဟာကို သုံးပါတယ်။

  • စာရင်းအကြီးကြီးကို အပိုင်းသေးသေးလေးတွေ အရင်ခွဲလိုက်တယ်။
  • အပိုင်းသေးလေးတွေကို အရင်စီတယ်။
  • ပြီးမှ ပြန်ပေါင်းတယ်။

ဒါဆိုရင် အများကြီး ပိုမြန်သွားပါတယ်။ ($O(n \log n)$)

Programming Language တိုင်းမှာ array.sort() ဆိုပြီး ပါလာတတ်ပါတယ်။ ဒါတွေက နောက်ကွယ်မှာ အမြန်ဆုံး Algorithm (ဥပမာ Timsort - Python/Java, QuickSort - JS V8 Engine) တွေကို သုံးပေးထားတာပါ။ လက်တွေ့ဘဝမှာတော့ ကိုယ်တိုင် Bubble Sort ရေးနေစရာ မလိုပါဘူး။ Built-in Function တွေကို ဘယ်အချိန် သုံးရမလဲ သိဖို့က ပိုအရေးကြီးပါတယ်။

Bubble Sort Pass-by-Pass Divide & Conquer Split/Merge Diagram Runtime Comparison Chart