လွယ်လွယ်ပြောရရင် Sorting Algorithm ဆိုတာ ရှုပ်ပွနေတဲ့ data တွေကို အသေးကနေ အကြီးကို၊ ဒါမှမဟုတ် A ကနေ Z ကို အစီအစဉ် တကျ ပြန်စီပေးတဲ့ နည်းလမ်းတွေပါ။

ကျွန်တော် ပထမဆုံး program ရေးတုန်းက sorting ကို “ဒါက အခြေခံပဲ၊ ဘယ်သူမှ ဂရုမစိုက်ဘူး” လို့ ထင်ခဲ့တယ်။ ဒါပေမယ့် နောက်မှ သိလာတာက — သင် ဖုန်းထဲက contact list ကို နာမည်အလိုက် ကြည့်နေတာပဲဖြစ်ဖြစ်၊ Shopee မှာ ဈေးအနည်းဆုံးကနေ အများဆုံးကို စီပြီး ကြည့်နေတာပဲဖြစ်ဖြစ်၊ အဲဒါအားလုံးရဲ့ နောက်ကွယ်မှာ sorting algorithm တစ်ခု အလုပ်လုပ်နေတာပါ။

စာအုပ်စင်ကို စီသလို စဉ်းစားကြည့်ပါ

သင့်အခန်းထဲက စာအုပ်စင်ပေါ်မှာ စာအုပ် ၁၀၀ ရှုပ်ပွနေတယ်ဆိုပါစို့။ စီဖို့ နည်းလမ်း အမျိုးမျိုး ရှိတယ်။

Bubble Sort — အနားက နှစ်အုပ်ချင်း လဲစီတာ

စာအုပ်စင်ရဲ့ ဘယ်ဘက်ဆုံးက စတယ်။ ပထမအုပ်နဲ့ ဒုတိယအုပ်ကို နှိုင်းတယ်။ မှားနေရင် နေရာလဲတယ်။ ပြီးတော့ ဒုတိယနဲ့ တတိယကို နှိုင်းတယ်။ ဒီလို အဆုံးထိ သွားတယ်။ တစ်ခေါက် ပြီးရင် အကြီးဆုံးစာအုပ်က အဆုံးကို ရောက်နေပြီ — ရေထဲက ပူဖောင်းလေး အပေါ်တက်သွားသလိုပဲ။ ဒါကြောင့် Bubble Sort လို့ ခေါ်တာ။

နားလည်ရလွယ်တယ်၊ ဒါပေမယ့် နှေးတယ်။ စာအုပ် ၁၀၀ စီဖို့ နှိုင်းယှဉ်မှု ၁၀,၀၀၀ လောက်လိုတယ်။ စာအုပ် ၁၀ အုပ်လောက်ဆိုရင် တော်သေးတယ်၊ ၁၀၀,၀၀၀ အုပ်ဆိုရင် တစ်နေကုန် ထိုင်နေရမယ်။

Selection Sort — အသေးဆုံးကို ရှာပြီး ရှေ့ထုတ်တာ

စာအုပ်အားလုံးထဲက အသေးဆုံးကို ရှာတယ်၊ အရှေ့ဆုံးကို ထုတ်တယ်။ ကျန်တဲ့ထဲက အသေးဆုံးကို ထပ်ရှာတယ်၊ ဒုတိယနေရာကို ထုတ်တယ်။ ဒီလို ဆက်သွားတယ်။ လဲရတာ နည်းတယ်၊ ဒါပေမယ့် ရှာရတာ များတယ်။

Quick Sort — အလယ်မှာ တစ်အုပ်ရွေးပြီး နှစ်ခြမ်းခွဲတာ

ဒါက အသုံးအများဆုံး နည်းပါ။ စာအုပ်တစ်အုပ်ကို pivot အဖြစ် ရွေးတယ်။ အဲဒီစာအုပ်ထက် သေးတဲ့စာအုပ်တွေကို ဘယ်ဘက်ခြမ်း၊ ကြီးတဲ့စာအုပ်တွေကို ညာဘက်ခြမ်း ပို့တယ်။ ပြီးတော့ ဘယ်ခြမ်း၊ ညာခြမ်းကို သပ်သပ် ထပ်ခွဲတယ်။ ဒီလို အပိုင်းပိုင်းခွဲသွားရင် နောက်ဆုံးမှာ အားလုံး အစီအစဉ် တကျ ဖြစ်သွားတယ်။

Quick Sort က စာအုပ် ၁၀၀,၀၀၀ ကိုတောင် ခဏလေးနဲ့ စီပြီးတယ်။ Python ရဲ့ sorted() function နောက်ကွယ်မှာလည်း ဒီလို အမြန်နည်းတစ်မျိုးကို သုံးထားတယ် (Timsort လို့ ခေါ်တယ်)။

Python မှာ လက်တွေ့ စမ်းကြည့်ပါ


scores = [88, 42, 95, 67, 73]

# အသေးကနေ အကြီးကို
print(sorted(scores))
# [42, 67, 73, 88, 95]

# အကြီးကနေ အသေးကို
print(sorted(scores, reverse=True))
# [95, 88, 73, 67, 42]

names = ["Aung", "Zaw", "Mya", "Ko"]
print(sorted(names))
# ['Aung', 'Ko', 'Mya', 'Zaw']

ကိုယ်တိုင် sorting algorithm ရေးဖို့ မလိုဘူး — Python က အဆင်သင့် ပေးထားပြီးသား။ ဒါပေမယ့် ဘယ်နည်းက ဘယ်အချိန်မှာ မြန်လဲ ဆိုတာကို နားလည်ထားရင်—

data နည်းနည်းလေးဆိုရင် ဘယ်နည်းဖြစ်ဖြစ် ရတယ်၊ ကွာခြားမှု မရှိသလောက်ပဲ
data သန်းချီရှိရင် Quick Sort လို အမြန်နည်းက မဖြစ်မနေ လိုတယ်
data က အစီအစဉ် တကျ နီးနီးဖြစ်နေပြီဆိုရင် Bubble Sort တောင် မြန်မြန် ပြီးသွားနိုင်တယ်

ဘာလို့ ဒါကို လေ့လာသင့်တာလဲ?

အကြောင်းရင်း ၃ ခုရှိတယ်။

အလုပ်အင်တာဗျူးတိုင်းနီးပါးမှာ sorting အကြောင်း မေးတယ် — ဒါက programmer တစ်ယောက်ရဲ့ အခြေခံဗဟုသုတလို့ သတ်မှတ်ထားလို့ပါ
Search လုပ်တာက sorting နဲ့ တွဲနေတယ်။ အစီအစဉ် တကျ ဖြစ်နေတဲ့ data ထဲမှာ ရှာတာက ရှုပ်နေတဲ့ data ထဲမှာ ရှာတာထက် အဆပေါင်းများစွာ မြန်တယ်
သင် နေ့တိုင်း သုံးနေတဲ့ app တွေရဲ့ “ဈေးအလိုက် စီပါ”၊ “နေ့စွဲအလိုက် စီပါ” ဆိုတဲ့ ခလုတ်တိုင်းရဲ့ နောက်ကွယ်မှာ ဒီ algorithm တွေပဲ

ရှုပ်နေတဲ့ အရာတွေကို အစီအစဉ် တကျ ပြန်စီတတ်တာက ကွန်ပျူတာသိပ္ပံရဲ့ အခြေခံအကျဆုံး ပညာတစ်ခုပါ။ နောက်တစ်ခါ သင် ဖုန်းထဲက ဓာတ်ပုံတွေကို နေ့စွဲအလိုက် စီကြည့်မိရင်၊ အဲဒီနောက်ကွယ်မှာ sorting algorithm တစ်ခု ခဏလေးနဲ့ အလုပ်လုပ်သွားတာကို သတိရလိုက်ပါ။ 🙂