မာတိကာ[ဖျောက်][ရှိုး]
ကွန်ပြူတာသိပ္ပံသည် algorithms နှင့် data structures များ၏ ရှုပ်ထွေးမှုများကို နားလည်သဘောပေါက်ခြင်း ဖြစ်သည်။
သင့်တွင် စီရန် လိုအပ်သည့် အရာများစာရင်း ရှိသည်၊ သို့သော် ပိုမိုရှုပ်ထွေးသော စီခြင်း အယ်လဂိုရီသမ်ကို အသုံးပြုရန် သင့်တွင် အချိန် သို့မဟုတ် အရင်းအမြစ်များ မရှိပါ။
Insertion sorting သည် အရိုးရှင်းဆုံး အမျိုးအစားခွဲခြင်း algorithms များထဲမှ တစ်ခုဖြစ်ပြီး ကြီးမားသော list များအတွက် နှေးကွေးနိုင်ပါသည်။
လွယ်ကူစွာ အကောင်အထည်ဖော်ခြင်းနှင့် နားလည်သဘောပေါက်ခြင်းတို့ကြောင့် ဤနည်းလမ်းကို ပရိုဂရမ်မာများကြားတွင် အနှစ်သက်ဆုံးဖြစ်စေခဲ့သည်။ ၎င်းသည် သေးငယ်သောစာရင်းများအတွက် သို့မဟုတ် အမြန်ဖြေရှင်းချက်လိုအပ်သည့်အခါတွင် ပြီးပြည့်စုံသည်။
ဤဘလော့ဂ်ပို့စ်တွင်၊ ထည့်သွင်းမှုအမျိုးအစားခွဲခြင်း၏ အချိန်ရှုပ်ထွေးမှုကို ကြည့်ရှုပါမည်။ ဤ algorithm သည် array များကို စီရန် အသုံးပြုထားပြီး ၎င်းတွင် O(n) ၏ runtime ရှိသည်။2) ဆိုလိုသည်မှာ array ၏အရွယ်အစားနှင့်အတူ အချိန်ရှုပ်ထွေးမှု တိုးလာသည်။
သို့သော်၊ ဤအယ်လဂိုရီသမ်သည် အမြန်အမျိုးအစားခွဲခြင်းကဲ့သို့သော အခြားအမျိုးအစားခွဲခြင်းဆိုင်ရာ အယ်လဂိုရီသမ်များထက် မကြာခဏ မြန်နိုင်သည်။
ထည့်သွင်းမှု အမျိုးအစားခွဲခြင်း အလုပ်လုပ်ပုံကို အနီးကပ် လေ့လာကြည့်ကြပါစို့။
Insertion Sort Algorithm ဆိုတာ ဘာလဲ။
တစ်ကြိမ်လျှင် ဒြပ်စင်တစ်ခု၊ ထည့်သွင်းမှုအမျိုးအစားသည် စာရင်းတစ်ခုအဖြစ် မကြာခဏခေါ်ဝေါ်နိုင်သော စီခွဲနိုင်သော ခင်းကျင်းတစ်ခုကို ထုတ်ပေးသည်။
ဥပမာအားဖြင့်၊ တိုကင်များ၏အစီအစဥ်သည် ပရိုဂရမ်၏အဓိပ္ပာယ်ဖွင့်ဆိုမှုအတွက် အရေးကြီးသော ရှုပ်ထွေးသောကွန်ပြူတာပရိုဂရမ်များကဲ့သို့သော ရှုပ်ထွေးသောကွန်ပြူတာပရိုဂရမ်များတွင် စီစီခြင်းကိုအသုံးပြုသည်။
Insertion Sort ဘယ်လိုအလုပ်လုပ်သလဲ။
array တစ်ခုကို စီရန် ထည့်သွင်းခြင်း အမျိုးအစားကို ကျွန်ုပ်တို့ အသုံးပြုသောအခါ၊ အယ်လဂိုရီသမ်သည် စာရင်းထဲရှိ အသေးငယ်ဆုံးအရာကို ရှာဖွေပြီး မှန်ကန်သော အနေအထားတွင် ထည့်သွင်းခြင်းဖြင့် စတင်သည်။
ထို့နောက် ၎င်းသည် နောက်ထပ်အသေးဆုံးအရာအား ရှာဖွေပြီး မှန်ကန်သောအနေအထားတွင် ထည့်သွင်းပေးသည်။
အယ်လဂိုရီသမ်သည် စာရင်းကို လှည့်ပတ်ကာ၊ အကြောင်းအရာတစ်ခုစီကို ၎င်း၏ရှေ့တွင် ရောက်ရှိလာသည့်အရာနှင့် နှိုင်းယှဉ်ခြင်းဖြင့် အလုပ်လုပ်သည်။
ပစ္စည်းများ မှားယွင်းနေပါက algorithm သည် ၎င်းတို့ကို လဲလှယ်ပေးသည်။ ၎င်းသည် စာရင်းကို စီထားခြင်း ရှိ၊ မရှိ စစ်ဆေးပြီး ဖြစ်ပါက၊ အယ်လဂိုရီသမ် အဆုံးသတ်ရန် စစ်ဆေးသည်။
လက်တွေ့တွင်၊ ကုဒ်မျဉ်းအနည်းငယ်ကို အသုံးပြု၍ ထည့်သွင်းမှုအမျိုးအစားကို မကြာခဏပြုလုပ်လေ့ရှိပြီး ၎င်းသည် သေးငယ်သော array များကိုစီရန် ရေပန်းစားသောရွေးချယ်မှုတစ်ခုဖြစ်လာသည်။ သို့သော် ဤ algorithm ကိုအသုံးပြုသည့်အခါ အချိန်ရှုပ်ထွေးမှုကို ထည့်သွင်းစဉ်းစားသင့်သည်။
ဥပမာ:
ဤတွင် ထည့်သွင်းမှု စီခြင်းလုပ်ဆောင်ပုံ ဥပမာတစ်ခုဖြစ်သည်။ ကျွန်ုပ်တို့သည် အောက်ပါ array ကို အသုံးပြုပါမည်-
1, 2, 3, 4, 5, 6
အယ်လဂိုရီသမ်သည် စာရင်းထဲရှိ အသေးငယ်ဆုံးအရာဖြစ်သည့် 1 ကိုရှာဖွေခြင်းဖြင့် စတင်သည်။ ထို့နောက် ၎င်းသည် ၎င်းကို မှန်ကန်သောအနေအထား၊ ပထမအနေအထားသို့ ထည့်သွင်းသည်။ ထို့နောက် ၎င်းသည် နောက်ထပ်အသေးဆုံးအရာဖြစ်သည့် 2 ကိုတွေ့သည်။ ၎င်းသည် ၎င်းကို မှန်ကန်သောအနေအထားတွင်ထည့်သည်၊ ၎င်းသည် ဒုတိယအနေအထားဖြစ်သည်။
ထို့နောက် အသေးဆုံးအရာ 3 ဖြစ်သည့် နောက်တစ်ခုကို ရှာတွေ့သည်။ ၎င်းသည် ၎င်းကို မှန်ကန်သော အနေအထားသို့ ထည့်ပေးသည်၊ ၎င်းသည် တတိယအနေအထားဖြစ်သည်။
ထို့နောက် ၄င်းသည် အသေးဆုံးအရာဖြစ်သည့် 4 ကိုရှာဖွေသည်။ ၎င်းသည် မှန်ကန်သောအနေအထား၊ စတုတ္ထအနေအထားဖြစ်သည့် စတုထ္ထမြောက်အနေအထား၊ အစရှိသည်တို့ကို ထည့်သွင်းသည်။ စာရင်းကို ယခုခွဲပြီးပါပြီ။
စာရင်းကိုခွဲရန် algorithm သည် နှိုင်းယှဉ်ချက်ခြောက်ခုနှင့် လဲလှယ်မှုများကို အသုံးပြုကြောင်း ဥပမာမှ ကျွန်ုပ်တို့တွေ့မြင်နိုင်ပါသည်။ အဘယ်ကြောင့်ဆိုသော် ၎င်းသည် n2 n အရာများစာရင်းကိုခွဲရန် နှိုင်းယှဉ်မှုများနှင့် လဲလှယ်မှုများ။ ဒီနေရာမှာ n=6။
Insertion Sort Time Complexity ကို ဘယ်လိုတိုးတက်အောင်လုပ်မလဲ။
ထည့်သွင်းမှုအမျိုးအစားတွင် O(n) ၏ runtime ရှိသည်။2) Quicksort ကဲ့သို့သော ပိုကောင်းတဲ့ sorting algorithm ကိုအသုံးပြုခြင်းဖြင့် ၎င်းကို တိုးတက်အောင်လုပ်နိုင်ပါတယ်။
Quicksort တွင် O(n) ထက်ပိုမြန်သော O(n log n) runtime ရှိသည်။2).
သို့ရာတွင်၊ အချို့သောကိစ္စများတွင်၊ ထည့်သွင်းခွဲဝေခြင်းသည် အမြန်အမျိုးအစားထက် ပိုမြန်နိုင်သည်။
ဥပမာအားဖြင့်၊ စာရင်းသည် အစဉ်လိုက်ဖြစ်နေပြီဆိုလျှင်၊ ထည့်သွင်းမှု အမျိုးအစားခွဲခြင်းသည် အမြန်အမျိုးအစားထက် အချိန်ပိုကြာလိမ့်မည်။
လက်တွေ့တွင်၊ ကုဒ်မျဉ်းအနည်းငယ်ကို အသုံးပြု၍ ထည့်သွင်းမှုအမျိုးအစားကို မကြာခဏပြုလုပ်လေ့ရှိပြီး ၎င်းသည် သေးငယ်သော array များကိုစီရန် ရေပန်းစားသောရွေးချယ်မှုတစ်ခုဖြစ်လာသည်။
သို့သော် ဤ algorithm ကိုအသုံးပြုသည့်အခါ အချိန်ရှုပ်ထွေးမှုကို ထည့်သွင်းစဉ်းစားသင့်သည်။
အချိန်ရှုပ်ထွေးမှုများ
အဆိုးဆုံး ဖြစ်ရပ်မှန် ရှုပ်ထွေးမှု O(n2):
array ၏အရွယ်အစားနှင့်အတူ အချိန်ရှုပ်ထွေးမှု တိုးလာသည်။ ဎ ယူတယ်။2 n အရာများစာရင်းကိုခွဲရန် နှိုင်းယှဉ်မှုများနှင့် လဲလှယ်မှုများ။
ဥပမာအားဖြင့်၊ ကျွန်ုပ်တို့တွင် အရွယ်အစား 1000 ရှိလျှင် array ကို စီရန် algorithm သည် နှိုင်းယှဉ်ချက် 1,000,000 နှင့် swap များကို ယူပါမည်။
အကောင်းဆုံး ဖြစ်ရပ်မှန် ရှုပ်ထွေးမှု O(n)
အချိန်ရှုပ်ထွေးမှုသည် input array ၏အရွယ်အစားနှင့်အတူတူဖြစ်သည်။ ငါ
n အရာများစာရင်းကိုစီရန် n နှိုင်းယှဥ်မှုများနှင့် ဖလှယ်မှုများကို ယူသည်။ ဥပမာအားဖြင့်၊ အရွယ်အစား 5 ၏ array တစ်ခုကို စဉ်းစားပါ။ algorithm သည် array ကို စီရန် နှိုင်းယှဉ်မှု ငါးခုနှင့် လဲလှယ်မှုများကို ယူပါမည်။
ပျမ်းမျှ ဖြစ်ရပ်မှန် ရှုပ်ထွေးမှု O(n2):
အချိန်ရှုပ်ထွေးမှုသည် ဤကိစ္စတွင် အဆိုးဆုံးနှင့် အကောင်းဆုံး ရှုပ်ထွေးမှုများကြားတွင်ဖြစ်သည်။
ဎ ယူတယ်။2 n အရာများစာရင်းကိုခွဲရန် နှိုင်းယှဉ်မှုများနှင့် လဲလှယ်မှုများ။
ထို့ကြောင့် ထည့်သွင်းမှု စီစဥ်ခြင်းသည် တည်ငြိမ်သော စီခြင်းဆိုင်ရာ အယ်လဂိုရီသမ်တစ်ခု ဖြစ်သည်။
Insertion Sort သည် အဘယ်ကြောင့် တည်ငြိမ်သနည်း။
ထည့်သွင်းမှုအခင်းအကျင်းရှိ တူညီသောဒြပ်စင်များ၏ အစီအစဥ်ကို ထိန်းသိမ်းထားသောကြောင့် ထည့်သွင်းမှုအမျိုးအစားသည် တည်ငြိမ်သည်။
ဒေတာပြန်လည်ရယူခြင်း သို့မဟုတ် ငွေကြေးဆိုင်ရာ ခွဲခြမ်းစိတ်ဖြာခြင်းကဲ့သို့သော အပလီကေးရှင်းများစွာအတွက် ၎င်းသည် အရေးကြီးပါသည်။ ဥပမာအားဖြင့်၊ ကျွန်ုပ်တို့တွင် ဂဏန်းစာရင်းနှစ်ခုရှိပြီး ၎င်းတို့ကို နှိုင်းယှဉ်လိုပါက၊ ဒြပ်စင်များ၏ အစီအစဥ်ကို ထိန်းသိမ်းထားရန် လိုအပ်ပါသည်။
စာရင်းများကို မခွဲထားပါက ၎င်းတို့ကို အတိအကျ နှိုင်းယှဉ်မည်မဟုတ်ပါ။
တစ်ဦးစာပြန်ရန် Leave