You are on page 1of 342

©Copyright 2021, Myat Mon Aye.

All right reserved.


Table of Contents

အခန်း (0) – Computer System 1

အခန်း (၁) – Numbering System 7

အခန်း (၂) – Boolean algebra 23

အခန်း (၃) – သခ္ချာ အခ ခခံမချာ်း 34

အခန်း (၄) – Statistics ဆင


ို ရျာ အခ ခခံ 47

အခန်း (၅) – Data Structure မတဆက 62

အခန်း (၆) – Algorithm မတဆက 72

အခန်း (၇) – Control Flow and Flowchart 80

အခန်း (၈) – Efficiency and Basic Algorithms 109

အခန်း (၉) – Recursion 132

အခန်း (၁၀) – Data သမ်းဆည်းပံို 139

အခန်း (၁၁) – String 155

အခန်း (၁၂) – Arrays and Basic Algorithms 171

အခန်း (၁၃) – Sorting 202

အခန်း (၁၄) – Stack, Queue and Hashing 242

အခန်း (၁၅) – Linked List 271

အခန်း (၁၆) – Tree 298

အခန်း (၁၇) – Graph 326

Conclusion 337
ပညာတ ွေ သင်က ာြားဖို့ အခွေငဲ့်အတ ြားတပြားခဲ့က တသာ မသာြားစ၊ ငယ်စဉ်မှစပပြား ယခအခ န်အထ ပညာမ ာြား

သင်က ာြားတပြားခဲ့က တသာ သင်ဆ ာ၊ မမင်ဆ ာ၊ က ာြားဆ ာမ ာြား၊ စာသင်က ာြားမခင်ြား လပ်မဖစ်တအာင်

အခွေငဲ့်အတ ြားတပြားခဲ့က သူမ ာြား၊ ဤစာအပ်နှငဲ့်ပ ်သ ်ပပြား တ ြားဇူြား င်ထ ်သူအာြားလြား

တ ြားဇူြား င် န်တ ာဲ့ပါ ယ်။

ဆယ်စနှစ်တ ာ် င်တအာင် စာသင်က ာြားဖို့ အခွေငဲ့်အတ ြားတပြားခဲ့က တသာ၊ IT Field မှာ င်လည်ဖို့

အခွေငဲ့်အတ ြားတပြားခဲ့က တသာ ပညဲ့်အတပါင်ြား လည်ြား အထူြားတ ြားဇူြား င်ပါ ယ်။


Data Structure and algorithms for beginners | Dr. Myat Mon Aye

အခန်း (0)

Computer System

Computer System ဆိုတာဘာလဲ။

Computer System ဆတ
ို ာ ဘာလဲ မပ ာခင် computer တစ်လိုုံးရဲဲ့ အလို ်လို ် က
ို ို

အရင်ပ ာ ါ့မယ်။

Processing

Input (CPU) Output

Memory

▪ Input ဆိုတာက က ဝင်လာတာ ။

▪ Processing ဆိုတာက အလို ်လို တ


် ာ ၊ တွက်ချက်တာ ။

▪ Memory ဆိုတာက အချက်အလက်ပတွ သိုမုံး သမ်ုံးဆည်ုံးထာုံးတဲါ့ ပေရာ ။

▪ Output ဆိုတာကပတာါ့ ထိုတ် တာ ။

ပ ုံးဝယ်သွာုံးရင်ုံးေဲဲ့ လူတစ်ပယာက်က ကိုယ်က


ါ့ ို ရယ် ပေတာ မင်လိုက်တယ်ဆို စိုဲ့၊

အဲဒလူကို ရင်ုံးရင်ုံးနုံးနုံး သပေတယ်၊ ဒ ပ မဲါ့ ဘယ်သူလဲဆိုတာ စဉ်ုံးစာုံးလိုဲ့မရဘူုံး၊ တစ်ဖက်က

ရယ် ပေပတာါ့ ပခ င်ုံးပတွထူ ူပေပအာင် စဉ်ုံးစာုံးတယ်၊ ပ ာပေောက်ဆိုုံးပတာါ့ ဘယ်သူလဲ ဆိုတာ

စဉ်ုံးစာုံးလိုဲ့ရပ ုံး ဝမ်ုံးသာအာုံးရေဲဲ့ ရယ် ပေသူရဲဲ့ အမည်ကို ပ ုံးပ ုံးကကုံး ပရရွတ်လိုက်တယ်။

1|Page
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

▪ “လူတစ်ပယာက်က ကိုယါ့်ကို ရယ် ပေတာ မင်လိုက်တယ်” ဆိုတာ ကိုယရ


်ါ့ ဲဲ့

မျက်လိုုံးထဲကပေ ဝင်လာတာ ဖစ်တဲါ့အတွက် input ၊ မျက်လိုုံးဆိုတာကပတာါ့

computer လို ပ ာမယ် ဆိုရင် input device ။

▪ ကျွေ်မတိုဲ့ ာ ကျွေ်မတိုဲ့ မင်သမျှ၊ ကကာုံးသမျှ၊ သသမျှ အရာပတွ အာုံးလိုုံးကို

မတ်ဉာဏ်ထဲမာ သမ်ုံးဆည်ုံးပလါ့ရ တယ်။ အဲဒ မတ်ဉာဏ်ကို memory လိုဲ့ ပခေါ် တယ်။

▪ “ပခ င်ုံးပတွထူ ပ
ူ ေပအာင် ဘယ်သူလဲ စဉ်ုံးစာုံးတယ်” ဆိုတာ processing ။ ဘယ်လို

စဉ်ုံးစာုံးသလဲ ဆိုပတာါ့ မျက်လိုုံးကပေ ဝင်လာတဲါ့ ရယ် ပေတဲါ့ လူရဲဲ့ ိုကို မတ်ဉာဏ်ထဲ

သမ်ုံးထာုံးတဲါ့ data ပတွေဲဲ့ တက


ို ်စစ်ပ ုံး လိုက်ရာတာ ။ ဒ ပကကာငါ့် တစ်ချ ဲ့

မတ်ဉာဏ်ပ ျာက်တါ့သ
ဲ ူပတွဆိုရင် ဘာမ မမတ်မဘူုံးဆိုတာ သမ်ုံးထာုံးတာပတွ

ယိုယင
ွ ်ုံးကိုေ်လိုဲ့ ရာမပတွဲ့ပတာါ့တါ့သ
ဲ ပဘာ ။ လူပတွမာ စဉ်ုံးစာုံးတာ တွက်ချက်တာ

ပတွကို ဦုံးပနောက်က အလို ် လို ်သလို computer မာပတာါ့ CPU(Central Processing

Unit) က အဲဒအလို ်ပတွကို လို ်ပဆာင် တယ်။ ဒ ပကကာငါ့် CPU ကို brain of

computer လိုဲ့ ပခေါ် တယ်။ CPU ာ computer ရဲဲ့ အပရုံးကကုံးဆိုုံး အစတ်အ ိုင်ုံး

ဖစ်တဲါ့အတွက် computer တစ်လိုုံးကို ပ ာတဲအ


ါ့ ခ မာ CPU ေဲဲ့ i3, i5, i7 ဆိုပ ုံးပ ာပလါ့

ရ တယ်။

▪ တက
ို ်စစ်လိုဲ့ ပတွဲ့သွာုံးပ ဆိုပတာါ့ ပ ုံးပ ုံးကကုံး အမည်ကို ပရရွတ်လိုက်တယ်ဆိုတာ

output ထိုတ်တာ ။ output ကို နစ်ပေရာကပေထိုတ်သွာုံးတာ ။ ပ ုံးပ ုံးကကုံး ဆိုတာ

output ကို မျက်နောအမူအရာကပေ ထိုတ် တာ ဖစ်ပ ုံး၊ အမည်ကို ပခေါ်လိုက်တယ် ဆိုတာ

output ကို ုံးစ ်ကပေ ထိုတ်လိုက်တာ ဖစ် တယ်။ Computer လိုပ ာမယ်

ဆိုရင်ပတာါ့ မျက်နောရယ်၊ ုံးစ ်ရယ်ဆိုတဲါ့ output device ၂ ခိုကို အသိုုံး ပ ုံး output

ထိုတ်သွာုံးတာ ။

2|Page
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

ဒလို ဲ၊ computer ဆိုတာ လူေဲဲ့ ဆင်တူ တယ်။ သူရဲဲ့ input devices ပတွကပတာါ့ mouse,

keyboard, barcode reader (စတိုုံးဆိုင်ပတွမာ ပတွဲ့ဖူုံးမာပ ါ့၊ ပကာင်တာမာ စစည်ုံးပတွကို တ

ဆိုပ ုံး အသပလုံးမည်မည်ပ ုံး ဖတ်တဲါ့စက်ပလုံး)၊ scanner(တစ်ချ ဲ့ရိုုံးပတွမာ လက်ပ ွတိုဲ့ မျက်နောတဲ့ိုေဲဲ့

ရိုုံးပရာက်ပကကာင်ုံး သတင်ုံး ဲ့တ


ို ဲါ့ စက်ပလုံးပတွ၊ တေည်ုံးအာုံး ဖငါ့် မျက်နော၊ လက်ပ ွ၊ ဓ တ် ို စသည် ဖငါ့်

တစ်ခိုခို ဖတ်တါ့ဲ စက်ကပလုံးပတွ) ဖစ် တယ်။ တ ခာုံး အမျာုံးကကုံး ရ ပသုံးတယ်။

Computer ရဲဲ့ output devices ပတွကို ပ ာရမယ် ဆိုရင်ပတာါ့ computer screen

(monitor), စာရွက်ထိုတ်တဲါ့စက် (printer) တိုဲ့ စသည် ဖငါ့် အမျာုံးကကုံး ရ တယ်။

Memory မာဆိုရင်ပတာါ့ အဓက အာုံး ဖငါ့် ၃ မျ ုံးရ တယ်။

1. ROM (read only memory) – read only ဆိုတဲါ့ အတိုင်ုံး ဖတ်လိုဲ့ ဲ ရ တယ်၊ သွာုံး င်တာ

ပရုံးတာ လို ်လမ


ိုဲ့ ရ ဘူုံး၊ အဓကအပေေဲက
ဲ့ ပတာါ့ စက်ကို ထိုတ်လို ်လိုက်တဲါ့

ထိုတ်လို ်သူ(manufacturer) က စက်အလို ်လို ်ဖဲ့အ


ို တွက် လိုအ ်တဲါ့အရာပတွကို

ROM ထဲ ထညါ့်ပ ုံးလိုက်တာ ။ ROM ထဲ ထညါ့်ပ ုံးလိုက်တာ ဖစ်လိုဲ့ ကျွေ်မတဲ့ို

ယူသိုုံးလိုဲ့ ဲ ရ ပတာါ့တယ်၊ သွာုံး င်လိုဲ့ မရ ဘူုံး။

2. Secondary Memory - သူက power မရလဲ (စက် တ်ထာုံးလိုဲ့ လျှ ်စစ်မရလဲ)

data(စာပတွ၊ သချင်ုံးပတွ၊ ပ
ို တွ စသည် ဖငါ့်) ပတွကို ထေ်ုံးသမ်ုံးထာုံးနိုင် တယ်၊ power

တ်လိုက်လိုဲ့ ပ ျာက်မသွာုံး ဘူုံး၊ ကျွေ်မတိုဲ့ ဖျက်မ ပ ျာက် တယ်။ ဒ ပကကာငါ့် ကျွေ်မတဲ့ို

စက်ထဲ သမ်ုံးသမျှ ာ အာုံးလိုုံး ာ secondary memory ပ ေါ်ရပေတာ ။

3. Main memory or primary memory or RAM - ယခိုလက်ရဖွငါ့်တာ အလို ်လို ်တာ

မေ်သမျှကို main memory ပ ေါ်ဆွဲတင်ပ ုံး အလို ်လို ် တယ်။ သူကပတာါ့ power

တ်လိုက်တာေဲဲ့ data အာုံးလိုုံးပ ျာက်ကိုေ် တယ်။ ဒ ပကကာငါ့် အပငွဲ့ ျသလို

3|Page
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

ပ ျာက်တယ် ဆိုတဲါ့ အဓ ပ ယ်ေဲဲ့ volatile memory လိုဲ့ ပခေါ် တယ်။ ဆေဲ့်ကျင်ဘက်

secondary memory ကိုပတာါ့ non-volatile memory လိုဲ့ ပခေါ် တယ်။

စက်ဝယ်တိုေ်ုံးက ဆိုင်ကပေပ ုံးပတာါ့ စာရိုက်တါ့ဲ software (e.g. Microsoft word) ကို စက်ထဲ

ထညါ့်ပ ုံးလိုက်တယ် ဆို ပတာါ့။ အဲဒ ဆိုရင် အဲဒ software ာ စက်ထဲ အပမဲရပေမာ ၊ ဘယ်အချေ်

ဖွငါ့်သိုုံးသိုုံးရ တယ်။ ဒ ဆို Microsoft Word ဆိုတဲါ့ software ာ စက် တ်ရင်ပတာင်

ပ ျာက်မသွာုံးဘူုံးဆိုပတာါ့ Secondary Memory ပ ေါ်မာ ရပေတာ ။

စာရိုက်ချင်လိုဲ့ ၂ ချက်န ်ပ ုံး Microsoft Word ကဖ


ို ွငါ့်လိုက်ပ ဆိုရင်ပတာါ့ ယခိုလက်ရ

အလို ်လို တ
် ာ ဖစ်လိုဲ့ Main Memory ပ ေါ်ပရာက်လာတာ ။ စာရိုက်တယ် စာရိုက်တယ် Main

Memory ပ ေါ်မာ အလို လ


် ို ်ပေတာ ။ အဲဒအချေ် မုံး ျက်သွာုံးပ ုံး စက် တ်သွာုံးကကညါ့် လာုံး၊

ရိုက်လက်စ စာပတွ ပ ျာက်သွာုံးမာ ဖစ် တယ်။ ဘာလိုဲ့လဲ ဆိုပတာါ့ Main Memory ဆိုတာ power

မရရင် (စက် တ်လိုက်တာေဲဲ့) data ပတွ ပ ျာက်သွာုံးလိုဲ့ ။

စက်မ တ်ခင် save လို ်ခဲါ့မယ် ဆိုရင် ပေောက်ပေဲ့ ေ်ဖင


ွ ါ့်ရသလာုံးဆိုပတာါ့ ရ တယ်။ ဒ ဆို

save တာက ဘယ်မာ သွာုံးသမ်ုံးသလဲဆိုရင် Secondary Memory မာ သွာုံးသမ်ုံးလိုဲ့ ဖစ် တယ်။

ဒပလာက်ဆိုရင် Computer System ကို သပဘာပ က်ပလာက်ပ ထင် တယ်။ Computer

System ဆိုတာ input devices (input components), output devices (output components),

processing devices (processing components) ေဲဲ့ memory စတဲါ့ အစတ်အ ိုင်ုံးပတွ

စိုထာုံးတာ ဖစ်တယ်လိုဲ့ အကကမ်ုံးဖျင်ုံး ပ ာလိုဲ့ရ တယ်။

အရင်ဆိုုံးပတာါ့ input device ကပေ input ဝင်လာမယ်၊ processing က တွက်ချက်မယ်၊

output က အပ ဖ ေ်ထိုတ် မယ်။ အဲဒမာ input ၊ processing နငါ့် output devices ပတွ ာ data

ပတွ သမ်ုံးဆည်ုံးထာုံးတဲါ့ memory ေဲဲ့ ချတ်ဆက်ပ ုံး အလို ်လို ် တယ်။

4|Page
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Memory တတွေဟာ မတူညီကြပါဘူ်း

လူတစ်ပယာက်ေဲဲ့ တစ်ပယာက် မတ်ဉာဏ်ပကာင်ုံးတာ၊ မပကာင်ုံးတာပတွ၊ မတ်နိုင်၊

သမ်ုံးဆည်ုံးနိုင်တဲါ့ မာဏပတွ မတူညကက ဘူုံး။ အဲဒလို ဲ computer တစ်လိုုံးနငါ့် တစ်လိုုံးမာလဲ

memory ပတွ ာ အလို ်လို ်နိုင်စွမ်ုံး (speed) ေဲဲ့ သမ်ုံးဆည်ုံးနိုင်တါ့ဲ မာဏပတွ (size) ပတွ

မတူညကက ဘူုံး။

Memory Measurement Units

အရ ဘ
် ယ်ပလာက်ရည်သလဲ ဆိုရင် လက်မ(inches)၊ ပ (feet)၊ မတာ (meter) တဲ့ေ
ို ဲဲ့

တင
ို ်ုံးတယ်၊ ခနဓောကိုယ် အပလုံးချေ်ကို kg, lb တိုဲ့ေဲဲ့ တင
ို ်ုံး တယ်။ အဲဒလို ဲ memeory ပ ေါ်မာ

ဘယ်ပလာက်ပေရာယူသလဲဆိုတာကို bit, byte, KB, MB, GB, TB တဲ့ေ


ို ဲဲ့ တင
ို ်ုံး တယ်။

တစ်ပ မာ ၁၂ လက်မ ဆိုတဲါ့ ပ ေဲဲ့ လက်မကကာုံး ဆက်သွယ်ချက် ရသလို ဲ bit, byte, KB, MB,

GB, TB ကကာုံးမာလည်ုံး ဆက်သွယ်ချက်ပတွ ရ တယ်။

▪ Bit – memory ကို တင


ို ်ုံးတာတဲါ့ အပသုံးဆိုုံး unit ။ 0 သမ
ိုဲ့ ိုတ် 1 တစ်လိုုံး ဲ သမ်ုံးလိုဲ့

ရ တယ်။

▪ Byte – 1-byte မာ 8 bits ရ တယ်။

▪ KB (kilobyte) – 1 KB မာ 1024(210) Byte ရ တယ်၊

▪ MB (megabytes) – 1 MB မာ 1024(210) KB ရ တယ်၊

▪ GB (gigabytes) – 1 GB မာ 1024(210) MB ရ တယ်၊

▪ TB (terabytes) – 1 TB မာ 1024(210) GB ရ တယ်၊

***အလွယအ
် ပေေဲပ
ဲ့ တာါ့ 1024 အစာုံး 1000 လိုဲ့ပ ာပလါ့ရ တယ်****

5|Page
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

“တွက်စာပတွ စပ ုံး လာပတာါ့မာ ဖစ်လ၊ိုဲ့

မတ်ဖ၊ိုဲ့ တွက်ဖိုဲ့ စာအို တ


် စ်အို ် လိုလာ ပ ။

အမျာုံးအာုံး ဖငါ့် ကျွေ်မကပတာါ့

မျဉ်ုံး တဲါ့ စာအို ်အပချာပတွထက်၊

အကကမ်ုံးစာရွက်ပတွ စိုချ ်ထာုံးတဲါ့

စာအို ်ကို ိုပ ုံးသပဘာကျ တယ်။

စာအို ်အကကမ်ုံးပလုံးပတွက

ပရုံးလိုကရ
် င်လည်ုံး အပေတာ ဲ၊

ပ ုံးပတာါ့ အဲဒထဲမာ

မတ်စပ
ို လုံးပတွပသချာပရုံး၊ ိုစဆာပလုံးပတွ ပသချာတွကလ
် ိုကလ
် ိုဲ့

အကကမ်ုံးစာအို ်ပလုံးကပေ အဖိုုံးတေ်ပလုံး ဖစ်သာွ ုံးတဲါ့

ခစာုံးချက်ကို သ ်သပဘာကျတာ။”

6|Page
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

အခန်း (၁)

Numbering Systems

Numbering Systems ဆိုတာ ဘာလဲ။

No Numbering System Base

1 Binary 2 0,1

2 Octal 8 0,1,2,3,4,5,6,7

3 Decimal 10 0,1,2,3,4,5,6,7,8,9

4 Hexadecimal 16 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F

Numbering Systems 4 မ ျိုးမှာ ကျွန်မတို့ နနို့စဉ် အသျိုးပ နနတှာကနတှာော့ Decimal

စနစ် ဲပြစ် ါတယ်။ သူဟှာ base 10 ါ။ ဒါန ကှာငော့် ဂဏန်ျိုး 10 လျိုးက ဲ ခွငော့်ပ ါတယ်။ 10 လျိုးက 0

ကနန စတင်နေတွက်လက်တော့ဲ အခါမှာ 9 မှာ 10 လျိုးပ ညော့်သွှာျိုး ါတယ်။ 129 (တစ်ေှာနစ်ဆယော့်ကျိုး)

လို့နခေါ်တဲော့ ကန်ျိုးဂဏန်ျိုးတစ်လျိုးမှာ digit 3 လျိုး ါနန ါတယ်။ 1 ေယ် 2 ေယ် 9 ေယ် ါ။ ေှာဂဏန်ျိုး

ပြစ်တဲော့အတွက် digit 3 လျိုး ါတှာ ါ။ န ှာင်ဂဏန်ျိုးဆေင် digit 4 လျိုး ါ ါမယ်။ digit

ဘယ်နစ်လျိုး ဲ ါ ါ decimal ပြစ်တဲော့အတွက် digits နတွဟှာ 0 to 9 အတွင်ျိုးမှာ ဲ ပြစ်မှာ ပြစ် ါတယ်။

Binary ကနတှာော့ base 2 ပြစ်တဲော့အတွက် 2 လျိုးခွငော့်ပ ါတယ်။ 0 ကနန

စတင်နေတွက်လက်နတှာော့ 1 မှာ 2 လျိုးပ ညော့် ါတယ်။ ဒါန ကှာငော့် 0,1 ကသှာ binary မှာ ခွငော့်ပ ါတယ်။

7|Page
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Octal ကနတှာော့ base 8 ပြစ်တဲော့အတွက် 8 လျိုးခွငော့်ပ ါတယ်။ 0 ကနန

စတင်နေတွက်လက်နတှာော့ 7 မှာ 8 လျိုးပ ညော့် ါတယ်။ ဒါန ကှာငော့် 0,1,2,3,4,5,6,7 ကသှာ octal မှာ

ခွငော့်ပ ါတယ်။

Hexadecimal ကနတှာော့ base 16 ပြစ်တဲော့အတွက် 16 လျိုးခွငော့်ပ ါတယ်။ 0 ကနန

စတင်နေတွက်လက်နတှာော့ 15 မှာ 16 လျိုးပ ညော့် ါတယ်။ အဲဒီမှာ 0 to 9 ကနတှာော့ 0 to 9 လို့ နေျိုးပ ီျိုး၊ 10

ကနတှာော့ A၊ 11 က B, 12 က C, 13 က D, 14 က E, 15 က F လို့ နေျိုး ါတယ်။ ဒါန ကှာငော့်

0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F ကသှာ hexadecimal မှာ ခွငော့်ပ ါတယ်။

Converting Between Numbering Systems

လက်မက န ြွွဲ့ဲ ၊ န က လက်မြွဲွဲ့ နဲို့ လအ ်သလ နပ ှာင်ျိုးပ ီျိုး တွက် ကေသလို့ Numbering

System နတွကလည်ျိုး လအ ်ေင် တစ်ခကနန တစ်ခက နပ ှာင်ျိုးတွက်နလော့ေ ါတယ်။

အလွယ်မတ်မယ်ဆေင် နစ်ခ က် ဲ မတ်ြို့လ ါတယ်။

▪ Decimal ကလှာေင် နပမှာက် ါမယ်။ binary ကနနလှာေင် binary ေဲွဲ့ base ပြစ်တဲော့ 2

power နတွနဲို့ နပမှာက်၊ Octal ကနနလှာေင် 8 power နတွနဲို့ နပမှာက်၊ Hexadecimal

ကနန လှာေင် 16 power နတွနဲို့ နပမှာက်ရ ါ ဲ။

▪ Decimal ကသွှာျိုး စှာျိုး ါမယ်။ ဘှာနဲို့စှာျိုးမလဲ ဆေင် binary ကသွှာျိုးေင် binary ေဲွဲ့ base

ပြစ်တဲော့ 2 နဲို့စှာျိုး ါမယ်။ ဒါဆေင် Octal ကသွှာျိုးေင် 8 နဲို့စှာျိုး၊ Hexadecimal ကသွှာျိုးေင် 16

နဲို့စှာျိုး လက်ရ ါ ဲ။

8|Page
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Converting from Others to Decimal

Binary to Decimal

(1101.101)2 = (?)10

(1101.101)2 = 1 * 23 + 1*22+ 0*21+ 1* 20 + 1* 2-1+ 0* 2-2 + 1* 2 -3

= 1*8 + 1*4 + 0*2 + 1*1(မည်သည်ကန်ျိုးမဆ ်ကန်ျိုး 0 တင်ေင် 1 ါ) +

1/2 + 0/4 +1/8

= 8 + 4 + 0 + 1 + 0.5 + 0 + 0.125 = (13.625) 10

စဆှာက base 2, binary ကနန base 10, decimal က နပ ှာင်ျိုးခင်ျိုးတှာပြစ်လို့ 2 power နတွနဲို့

နပမှာက် ါမယ်။ 2 power နတွနဲို့ နပမှာက်တဲော့ အခါ ဒဿမ နေွဲ့ က ်ေက်က ်ကန်ျိုး 0 ကနနပ ီျိုး

စ ါ ော့မယ်။ နေွဲ့က သွှာျိုးနလ ်ကန်ျိုး ၁ တျိုးနလနလပြစ်ပ ီျိုး ဒဿမကနန နနောက်ကသွှာျိုးနလ

်ကန်ျိုး ၁ နလ ှာော့နလနလ တွက်ေမှာ ပြစ် ါတယ်။

Octal to Decimal

(120.1)8=(?)10

= 1* 82 + 2* 81+ 0* 80 + 1* 8-1

= 1*64 + 2 * 8 + 0 * 1 + 1/8

= 64 + 16 + 0 + 0.125 = (80.125) 10

9|Page
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Hexadecimal to Decimal

(1A9)16= (?)10

= 1* 162 + A* 161+ 9* 160

= 1*256 + 10 * 16 + 9 * 1 = 256 + 160 + 9 = (425) 10

Converting from Decimal to Others

(123)10 = (?)2

2 123

2 61(123 က 2 ပြငော့် စှာျိုးလို့ေနသှာ စှာျိုးလဒ်), 1(123 က 2 ပြငော့် စှာျိုးလို့ေနသှာ အကကွင်ျိုး)

2 30(61 က 2 ပြငော့် စှာျိုးလေို့ နသှာ စှာျိုးလဒ်), 1(61 က 2 ပြငော့် စှာျိုးလေို့ နသှာ အကကွင်ျိုး)

2 15, 0

2 7, 1

2 3, 1

2 1, 1

2 0, 1 (စာ်းလဒ 0 ဖြစသာ်းလျှငရပပါ)

ပ ီျိုးလျှင် အကကွင်ျိုးနတွက နအှာက်မ အန ေါ်သို့ ခ နေျိုးပ ီျိုး အနပြ တ်ေမှာ ပြစ်တဲော့အတွက်

(123)10 = (1111 011)2

10 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

ကဲ အနပြမန်မမန် အန ေါ်မှာ နပ ှာခဲော့သလို့ ပ န်တွက် ကညော့်ေနအှာင်။ အနပြ binary ကနန decimal

ပ န်နပ ှာင်ျိုး ကညော့်မယ်။

(1111 011)2 = 1* 26 + 1* 25 + 1* 24+ 1* 23+ 0* 22+ 1* 21 + 1*20

= 1* 64 + 1* 32+ 1* 16 + 1*8 +0* 4+ 1* 2+ 1* 1

= 64 + 32 + 16 + 8 + 2 + 1

= (123) 10

မူေင်ျိုး အနပြ ပ န်ေတှာ နတွွဲ့ေမှာ ါ။

အလွယ်နည်ျိုးနဲို့ နပ ှာပ မယ်။

န ျိုး ှာျိုးတှာ ခ နေျိုး 1 1 1 1 0 1 1


X
ဒဿမနေွဲ့က ်ေက်က 2, 0 ်ဆနတှာော့ 1, 64 32 16 8 4 2 1

နေွဲ့သှာွ ျိုး ၁ ်တျိုးနတှာော့ 2,1 ် 2, ပ ျိုးီ ေင် 2 26 25 24 23 22 21 20

် 4,……..

1*64 1*32 1*16 1*8 0*4 1*2 1*1

= 1*64 +1* 32 +1* 16 +1* 8 +0*4+1* 2 +1* 1 (၁ ပြစ်တဲော့ နနေှာနတွ ယူန ါင်ျိုးလက်လည်ျိုးေ ါတယ်)

= 64 + 32 + 16 + 8 + 2 + 1 = (123) 10

11 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Decimal to Octal

(123)10 = (?)8

8 123

8 15, 3

8 1,7

8 0,1

(123)10 = (173)8

ကဲ အနပြမန်မမန် အန ေါ်မှာ နပ ှာခဲော့သလို့ ပ န်တွက် ကညော့်ေနအှာင်။ အနပြ octal ကနန

decimal ပ န်နပ ှာင်ျိုး ကညော့်မယ်။

(173)8 = 1* 82 + 7* 81 + 3* 80

= 1*64 + 7*8 +3

= 64 + 56 + 3 = (123) 10

မူေင်ျိုးအနပြပ န်ေတှာ နတွွဲ့ေမှာ ါ။ အလွယ်နည်ျိုး နဲို့ တွက် ကညော့်ေနအှာင်။

1 7 3

64(82) 8(81) 1(80)

1*64 = 64 7*8 = 56 3*1 = 3

= 64 + 56 + 3 = (123) 10

12 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Decimal to Hexadecimal

(123)10 = (?)16

16 123

16 7, 11 (B)

16 0, 7

(123)10 = (7B)16

အလွယ်နည်ျိုးနဲို့ ပ န်နပ ှာင်ျိုးပ ီျိုး အနပြ စစ် ကညော့် ကေနအှာင်။

7 B

16 (161) 1 (160)

7*16 = 112 11*1 = 11

=112 + 11 = (123)10

Decimal ဒဿမကန်း ကို ပဖပာင်းနည်း

Decimal ဒဿမကန်ျိုး က နပ ှာင်ျိုးမယ် ဆေင်နတှာော့ အ င်ျိုးနစ် င်ျိုးခွဲပ ီျိုး နပ ှာင်ျိုးေမှာ

ပြစ် ါတယ်။ ဒဿမ နေွဲ့အ င်ျိုးကနတှာော့ ျိုးစအတင်ျိုး စှာျိုးပ ီျိုး၊ ဒဿမ အနနောက် င်ျိုးကနတှာော့

်ခါ ်ခါ နပမှာက်န ျိုးေ ါတယ်။

13 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

(123.125)10 = (?)2

ဒဿမ နေွဲ့ အ င်ျိုးကနတှာော့ အေင်အတင်ျိုး စှာျိုးလဒ် 0 ေသည်အ ်ခါ ်ခါ စှာျိုး ါမယ်။

2 123

2 61, 1

2 30, 1

2 15, 0

2 7, 1

2 3, 1

2 1, 1

2 0, 1

နအှာက်ကနန အန ေါ်ယူလက်နတှာော့ ဒဿမ နေွဲ့ င်ျိုး အနပြက 1111 011 ါ။

ဒဿမ နနောက် င်ျိုးကနတှာော့ ်ခါ ်ခါ နပမှာက် ါမယ်။ Binary ကသွှာျိုးမှာ ပြစ်လို့ 2နဲို့ နပမှာက် ါမယ်။ Octal

ဆ 8, hexadecimal ဆ 16 န ါ ော့။

0.125 * 2 = 0 . 250 (ဒဿမနေွဲ့ ဂဏန်ျိုး = > 0)


တစ်ကကမ်ခ င်ျိုးေတဲော့ ဒဿမနေွဲ့
ဂဏန်ျိုးနတွက ယူ ါ၊ အန ေါ်နအှာက်
.25 * 2 = 0 . 50 (ဒဿမနေွဲ့ ဂဏန်ျိုး = > 0)
အနပြ တ် ါ

.50 * 2 = 1.0 (ဒဿမနေွဲ့ ဂဏန်ျိုး = > 1)

14 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

နပမှာက်လေ
ို့ လှာတဲော့အနပြေဲွဲ့ ဒဿမနနောက် မှာ 0 မ ွက်နသျိုးလို့ ်နပမှာက်မယ်ဆေင် ပ န်နပမှာက်ြို့

ဒဿမနနောက်က ဂဏန်ျိုးက ဲ ယူတှာ နတွွဲ့ ါလမော့်မယ်။ အခတွက်တှာမှာက ဒဿမနေွဲ့ 0 ခ ည်ျိုး ွက်လို့

သ ်မသသှာ ါဘူျိုး။ ဉ မှာ 1.125 ဆေင် နအှာက်မှာ ပ န်နပမှာက်ြို့ 0.125 ယ


ဲ ူေ ါမယ်။

နပမှာက်လေ
ို့ လှာတဲော့အနပြေဲွဲ့ ဒဿမ နနောက်မှာ 0 ဲေနတှာော့ေင် ေ ် ါမယ်။ တစ်ခ ွဲ့ဟှာနတွမှာ

ဘယ်နလှာက်နပမှာက်နပမှာက် ဒဿမနနောက် 0 ပြစ်မသွှာျိုးတှာနတွ ေ ါတယ်၊ အဲဒီအနပခအနနဆေင်

က်သငော့်သနလှာက် အကကမ် အနေအတွက်(အနည်ျိုးဆျိုး 8 ကကမ်နလှာက်) နပမှာက်ပ ီျိုးေင် ေ ်လက် ါ။

တစ်ကကမ်ပခင်ျိုးေတဲော့ ဒဿမနေွဲ့ ဂဏန်ျိုးနတွက အန ေါ်နအှာက်ယူလက်ေင် 001 ဆပ ီျိုး ေ ါတယ်။

အနပြ နစ်ခပ န်န ါင်ျိုးလက်မယ်ဆေင် 1111 011.001 ဆပ ီျိုးေ ါတယ်။

(123.125)10 = (1111 011.001)2

ဒီလဆေင် ဒဿမကန်ျိုးနတွကလည်ျိုး တစ်ပခှာျိုး Numbering System နတွက နပ ှာင်ျိုးတှာ

တွကတ
် တ်နလှာက် ါပ ။ီ နအှာက်က စဆှာနလျိုးနတွ တွက် ကညော့် ကညော့် ါ။

(2345.140625)10 = (?)2

(2345.140625)10 = (?)8

(2345.140625)10 = (?)16

(246.8)10 = (?)2

(246.8)10 = (?)8

(246.8)10 = (?)16

15 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Binary, Octal and Hexadecimal

▪ Binary က base 2 ပြစ် ါတယ်။

▪ Octal က base 8၊ 8 ဆတှာ 2, 3 ်ပြစ်တဲော့အတွက် Octal တစ်လျိုးမှာ Binary 3

လျိုးေ ါမယ်။

▪ Hexadecimal က base 16၊ 16 ဆတှာ 2, 4 ်ပြစ်တဲော့အတွက် Hexadecimal

တစ်လျိုးမှာ Binary 4 လျိုးေ ါမယ်။

Octal and Binary

Octal တစ်လျိုးမှာ binary 3 လျိုးေတှာပြစ်လို့ နအှာက်က ဇယှာျိုးနလျိုးက သေင်ေ ါပ ီ။

22 = 4 21 = 2 20 = 1

Octal to Binary

(127)8 = (?)2

1 = 001 (အန ေါ်က ဇယှာျိုးက ကညော့် ါ 1 ဆနတှာော့ 4 နဲို့ 2 မယူ ဲ 1 ဲ ယူ ါမယ်)

2 = 010 (အန ေါ်က ဇယှာျိုးက ကညော့် ါ 2 ဆနတှာော့ 4 နဲို့ 1 မယူ ဲ 2 ဲ ယူ ါမယ်)

7 = 111 (7 ဆနတှာော့ 4+2+1 အကန်န ါင်ျိုးမ ေတှာမို့ အကန်ယူမယ်)

(127)8 = (001 010 111)2

16 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Binary to Octal

(1111 011)2 = (?)8

001 111 011 (နနောက်ကနနစပ ီျိုး ၃ လျိုးတစ်ပြတ် ပြတ် ါ ော့မယ်။ လအ ်ေင် အနေွဲ့မှာ 0 ညော့် ါ)

001 = 1

111 = 4+2+1 = 7

011 = 2+1 = 3

(1111 011)2 = (173)8

Hexadecimal and Binary

Hexadecimal တစ်လျိုးမှာ binary 4 လျိုးေတှာပြစ်လို့ နအှာက်က ဇယှာျိုးနလျိုးက သေင်ေ ါပ ီ။

23 = 8 22 = 4 21 = 2 20 = 1

Hexadecimal to Binary

(A7)16 = (?)2

A (10) = 8+2 = 1010 (အန ေါ်ကဇယှာျိုးက ကညော့် ါ 10 ဆနတှာော့ 8+2 ယူ ါမယ်၊ 1,4 နနေှာ မယူ ါ)

7 = 0111 (7 ဆနတှာော့ 4+2+1 မို့ 8 နနေှာက 0 က န်တှာ 1)

(A7)16 = (1010 0111)2

17 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Binary to Hexadecimal

(1111011)2 = (?)16

0111 1011 (နနောက်ကနန စပ ီျိုး 4 လျိုးတစ်ပြတ် ပြတ် ါ ော့မယ်။ 4 လျိုးမပ ညော့်ေင် နေွဲ့မှာ 0 ညော့)်

0111= 0+4+2+1 = 7, 1011 = 8+0+2+1 = 11 (B)

(1111 011)2 = (7B)16

Hexadecimal and Octal

Hexadecimal နဲို့ Octal အခ င်ျိုးခ င်ျိုး အပ န်အလန်နပ ှာင်ျိုးခ င် ကေင် Binary က ကှာျိုးခပ ီျိုး

နပ ှာင်ျိုးလို့ေ ါတယ်။

Octal to Hexadecimal

(173)8 = (?)16

(173)8 က binary အေင်နပ ှာင်ျိုး ါမယ်။

1 = 001, 7 = 111, 3 = 011

001 111 011 => 0000 0111 1011 (ေလှာတဲော့ 3 လျိုးတစ်တဲက


ွ hexadecimal

နပ ှာင်ျိုးနတှာော့မှာမို့ အနနောက်ကနန 4 လျိုး တစ်ပြတ်ပြတ် ါ ၊ အလျိုးအနေတွက်

မကက်ေင် နေွဲ့ကနန 0 နတွ ညော့လ


် ို့ေ ါတယ်)

0000 = 0, 0111 = 7, 1011 = 11(B)

(173)8 = (7B)16 (နေွဲ့ဆျိုးက 0 ဲေလို့ တန်ြျိုးမေနတှာော့ ပြ တ်လက် ါတယ်။)

18 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Hexadecimal to Octal

(7B)16 = (?)8

7 = 0111, B (11) = 8+2+1 = 1011

0111 1011 => 001 111 011 (ေလှာတဲော့ 4 လျိုးတစ်တဲက


ွ Octal နပ ှာင်ျိုးနတှာော့မှာမို့

အနနောက်ကနန 3 လျိုး တစ်ပြတ်ပြတ်၊ အလျိုးအနေတွက် မကက်ေင် နေွဲ့ကနန 0 နတွ

ညော့်လေ
ို့ ါတယ်)

001 = 1, 111 = 7, 011 = 3

(7B)16 = (173)8

Numbering System ကို ဘယလိုပတ အသို်းဖပြုကကသလဲ။

Character
ကျွန်မတို့ နနို့စဉ် နေှာင်ျိုးတယ် ဝယ်တဲော့ စတဲော့ တွက်ခ က် ကတဲန
ော့ နေှာနတွမှာ အသျိုးပ

နန ကတှာက Decimal System ပြစ် ါတယ်။ Computer ကနတှာော့ on/off ဲေတှာမို့ on ဆေင် 1, off

ဆ၇င် 0 စသည်ပြငော့် သတ်မတ်တှာန ကှာငော့် 0 နဲို့ 1 ခွငော့်ပ တဲော့ binary system က အသျိုးပ ါတယ်။

Computer မာ အသို်းဖပြုတဲဲ့ လူပတက လူန ်းလညသလို အလိုပလိုပတယ၊ ခိုင်းတယ၊ အဲဒါကို

စကက computer န ်းလညတဲဲ့ စကန ်းလညတဲဲ့ binary 0,1 ပဖပာင်းပပ်း အလိုပလိုပပါတယ။

နမူနောအနနနဲို့ နပ ှာေေင် ကျွန်မတို့ ‘A’ ဆပ ီျိုးန ်လက်တယ်။ စက် ဲမှာ A လို့

အလ ်မလ ် ါဘူျိုး။ A (A အကကီျိုး)ေဲွဲ့ သတ်မတ် ှာျိုးတဲော့ တန်ြျိုး 65 က binary နပ ှာင်ျိုးပ ီျိုး 0100 0001

စက် ဲမှာ အလ ်လ ် ါတယ်။

19 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

A ➔ (65)10 ➔ (0100 0001)2

B ဆေင် 66 က binary နပ ှာင်ျိုး ါ ော့မယ်။ စက်မှာေတဲော့ character တစ်ခခ င်ျိုးမှာ

သတ်မတ် ှာျိုးတဲော့ တန်ြျိုးနတွေ ါတယ်။

Character Decimal
A 65
B 66

a 97
b 98

က န်တဲော့ characterနတွေဲွဲ့ တန်ြျိုးနတွ သခ င်ေင် နအှာက်က link ကနန

ဝင် ကညော့်လေ ါတယ်။ အဲဒီ ဲမှာ Decimal တန်ြျိုး၊ Octal တန်ြျိုးနတွ ါ ါတယ်။ Decimal ကနန

Binary တို့ Hexadecimal တို့ နပ ှာင်ျိုး ကညော့် ကညော့် ါ။

https://en.wikipedia.org/wiki/List_of_Unicode_characters

Color
Web design င်ျိုးက နလော့လှာလို့ website နတွ နေျိုးသှာျိုးြန်တီျိုးတဲော့ အခါမှာ color ကနြေါ်ပ တဲော့

နနေှာမှာ red, green, blue ဆတဲော့ အနပခခ အနေှာင် ၃ နေှာင်န ေါ်မှာ အလ ်လ ် ါတယ်။ r (red),

g(green), b(blue) တန်ြျိုးနတွဟှာ 0 ကနန 255 အ decimal တန်ြျိုး ခွငော့်ပ ါတယ်။

အနီနေှာင် လခ င်ေင် - rgb (255, 0 , 0) လို့ နေျိုးလို့ေသလ၊ အကကီျိုးဆျိုးခွငော့်ပ တဲော့ 255 က

Hexadecimal နပ ှာင်ျိုး ကညော့်ေင် FF ေ ါတယ်၊ ဒါန ကှာငော့် decimal တစ်လျိုးမှာ hexadecimal 2 လျိုးနဲို့

နေျိုးလို့ေ ါတယ်။

20 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

255 → FF, 0→00, 0 → 00

ပ ီျိုးေင် heaxadecimal နဲို့ နေျိုးမယ်ဆေင် နေွဲ့က # ညော့်နေျိုးေ ါတယ်၊ ဒါန ကှာငော့် web site မှာ

color အနီလို့ နေျိုးခ င်ေင် - rgb (255, 0 , 0) or #FF0000 လို့ နေျိုးလို့ေ ါတယ်။

အစမ်ျိုးနေှာင် လခ င်ေင် - rgb (0, 255, 0) or #00FF00

အပ ှာနေှာင် လခ င်ေင် - rgb (0, 0 , 255) or #0000FF

အနီ နဲို့ အစမ်ျိုးစ ်ေင် လနမ္ှာ်ေ ါတယ် အနအေငော့်ကနတှာော့ 0 ကနန 255 အတွင်ျိုး အတျိုးနလ ှာော့

လ ် ကညော့်ေင် အန အေငော့်ေ ါတယ်။ ဥ မှာ

rgb (255, 165, 0) => #FFA500 , rgb (238, 154, 0) => #EE9A00

အဲဒီနစ်ခေဲွဲ့ အနေှာင် ကွှာပခှာျိုးခ က်က ကညော့်ခ င်ေင် internet မှာ rgb တန်ြျိုးပြစ်ပြစ်၊

hexadecimal တန်ြျိုးပြစ်ပြစ် ရက်ေှာလို့ေသလ နအှာက်က link မှာ ဝင် ကညော့်လို့လည်ျိုး ေ ါတယ်။

အနေှာင်စ တ
် ှာက စတ်ဝင်စှာျိုးြို့ အင်မတန် နကှာင်ျိုး ါတယ်။ အနေှာင်စ ်တဲော့ အနပခခလည်ျိုး

သနဘှာတေှာျိုးနတွလည်ျိုး နောျိုးလည်၊ hexadecimal နပ ှာင်ျိုးတှာ မန်မန်လဲ စစ်ေနအှာင် အဲဒီ link

ကနန အနေှာင်နတွ RGB တန်ြျိုးနတွ hexadecimal တန်ြျိုးနတွ နလော့လှာ ကညော့် ကညော့် ါ။

https://cloford.com/resources/colours/500col.htm

Chapter အနစခ ြုပ

▪ IT က နလော့လှာေင် Numbering System ဆတှာ နေှာင်လွဲလို့ မေ ါဘူျိုး။ နနေှာအစမှာ

အသျိုးပ ါတယ်။ အဲဒီ ဲကမ character code နဲို့ color နစ်ခ ဲ နမူနောပ

သွှာျိုးတှာပြစ် ါတယ်။ ေနအှာင်လ ်ြို့ လ ါတယ်၊ စှာအ ် ဲ ခ တွက် ါနနော်။

21 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

“Numbering System အတွက်

နမူနောနတွနေှာ၊ နလော့က ငော့်ခန်ျိုးနတွ ါ

အကန်လ ်ခော့ေ
ဲ ဲွဲ့လှာျိုးနတှာော့မသဘူျိုး။

ပ ျိုးီ မ လ ်နတှာော့မယ်ဆေင် မလ ်ပြစ်တှာမ ှာျိုး ါတယ်။

သပ ီျိုးသှာျိုးနတွ ါကွှာလို့ ှာျိုးခေ


ဲော့ င်လဲ

မ ကှာခင်နမော့မှာပြစ် ါတယ်။

ဒီနတှာော့ တစ်ခန်ျိုးတစ်ခန်ျိုးခ င်ျိုး တစ်ခါတည်ျိုး

အပ တ်ပြတ်ခန
ော့ဲ ျိုး ါ”

22 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

အခန်း (၂)

Boolean algebra

Logical Operators

Operators အလုပလုပပု နမူနာ

And (∧) အ ားလားမှန်မှ အလပ်လပ်တယ်။ တစ်ခ ဘ သ စအ ားလားတအ င်မှ


မှ ားတ နဲ့ အလပ်မလပ်တတ ဘ
ော့ ား။ စ တမားပတအ င်

Or (∨) အနည်ားဆား တစ်ခမှနတ


် နဲ့ တစ်ဘ သ ကျတ နဲ့ စ တမားပကျ
အလပ်လပ်တယ်။

Not(!) ဆနဲ့်ကျင်ဘက် တ ပ င်ားချင်တော့ True က not လပ်ရင် false


အခါမှ သားတယ်။ False က not လပ်ရင် true
And က not လပ်ရင် or, Or က not
လပ်ရင် and

Exclusive Or (xor) တရင် 0(False)၊ မတရင် 1(True)

Truth Table

Logical Operator တတဟ boolean တတတပေါ်မှ အလပ်လပ်တလော့ ရှပါတယ်။ Boolean

ဆတ Numbering System မှ တ ပ ခော့တော့ binary လပ ြစ်နင်တချ နှစ်ခပ ရှိပါတယ။ 1 (True) နင

0(False) တှိို့ုပဲဖြစပါတယ။ 1 ဟာ true နင တူပပ်း၊ 0 ဟာ false နဲို့ တူပါတယ။ 01 နဲို့ ရရ်းလည်း ရသလှို၊

True False နဲို့ ရရ်းလည်းရပါတယ။

▪ A လဲ့တ ပ လက်ရင် A တစ်ခထမဲ့ 21 ြစ်နင်တချ နှစ်ခပ ရှပါတယ်။

▪ A, B လဲ့တ ပ လက်ရင် A, B နှစ်ခ ြစ်တ တ က ငော့် 22 ြစ်နင်တချ 4 ရှပါတယ်။

23 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

▪ A, B, C လဲ့တ ပ လက်ရင် A, B, C သားခ ြစ်တ တ က ငော့် 23 ြစ်နင်တချ 8 ရှပါတယ်။

Not A

A Not A (!A)
0 1
1 0
ဒီလ table တလားဆတ က truth table လဲ့ တခေါ်ပါတယ်။ A ဆတ တလား တစ်ခပ ပါလဲ့

ြစ်နင်တချ စစတပါင်ား 2 ခ ရှပါတယ်။ 2 ခက တစ်ဝက်ဝက်လက်တတ ော့ 1 ခရပါတယ်။ ဒါတ က ငော့် A က

0 တစ်လား၊ 1 တစ်လား တရားမှ ြစ်ပါတယ်။ A က 0(False) ဆရင် Not A က 1(True), A က 1(True)

ဆရင် Not A က 0(False) ရမှ ြစ်ပါတယ်။

A and B, A or B, A xor B

A, B လဲ့တ ပ လက်ရင် A, B နှစ်ခ ြစ်တ တ က ငော့် 22 ြစ်နင်တချ 4 ရှပါတယ်။ 4 ခက

တစ်ဝက်ဝက်တတ ော့ 2 ခရပါတယ်။ ဒါရ ာင A ှို 0(False) နစလု်း၊ 1(True) နစလု်း ရရ်းမာ

ဖြစပါတယ။ 2 ခု ှို ထပပပ်း တစဝ ဝ ရတာ 1 ဒါရ ာင B ှို 0(False) တစလု်း၊ 1(True)

တစလု်း ဆှိုပပ်း ထပထပ ရရ်းရမာ ဖြစပါတယ။

A B A and B A or B A xor B
0 0 0 0 0
0 1 0 1 1
1 0 0 1 1
1 1 1 1 0
▪ And ကတတ ော့ အ ားလားမှနမ
် ှ True(1)

▪ Or ကတတ ော့ အနည်ားဆား တစ်ခမှန်တ နဲ့ True(1)

24 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

▪ Xor ကတတ ော့ တရင် 0(False)၊ မတရင် 1(True) ြစ်ပါတယ်။

A, B, C သားခအတက် Truth Table ဆ ပပါမယ်။ A, B, C လဲ့တ ပ လက်ရင် A, B, C

သားခ ြစ်တ တ က ငော့် 23 ြစ်နင်တချ 8 ရှပါတယ်။ A အတက် 8 ခက တစ်ဝက်ဝက်တတ ော့ 4 ခရမှ

ြစ်ပါတယ်။ ဒါတ က ငော့် A အတက် 0(False) 4 ခ၊ 1(True) 4 ခတရားမှ ြစ်ပါတယ်။ B အတက် 4 ခက

တစ်ဝက်ထပ်ဝက်တတ ော့ 2 ရပါတယ်။ ဒါတ က ငော့် B အတက် 0(False) 2 ခ၊ 1(True) 2 ခဆပပီား ထပ်ထပ်

တရားမှ ြစ်ပါတယ်။ C အတက် 2 ခက တစ်ဝက်ထပ်ဝက်တတ ော့ 1 ရပါတယ်။ ဒါတ က ငော့် C အတက်

0(False) 1 ခ၊ 1(True) 1 ခ ထပ်ထပ် တရားမှ ြစ်ပါတယ်။

A B C A and B and C A or B or C A xor B xor C


0 0 0 0 0 0
0 0 1 0 1 1
0 1 0 0 1 1
0 1 1 0 1 1
1 0 0 0 1 1
1 0 1 0 1 1
1 1 0 0 1 1
1 1 1 1 1 0
ဒီတလ က်ဆရင် Truth Table က န ားလည်တလ က်ပပီ ထင်ပါတယ်။

Rules in Boolean algebra

De Morgan’s law

စ တမားပတစ်ခမှ ဘာသာရပ် ၃ ခ တ ြရတယ်၊ ၃ ဘ သ စလားတအ င်မှ စ တမားပ

တအ င်ပါမယ်၊ တစ်ဘ သ ကျတ နဲ့ စ တမားပ ကျမယ် ဆပါတတ ော့။ ဒါဆ တအ င်တယ်ဆတ ၃

ဘ သ လားတအ င်မှ တအ င်တ ၊ အ ားလားတအ င်မှ တအ င်တ ြစ်တအ


ော့ တက် and နဲ့ တရားရပါမယ်၊

25 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

ကျတ က တစ်ဘ သ ကျရင် ကျတ ြစ်တအ


ော့ တက်၊ တစ်ခ ြစ်တ နဲ့ လပ်တ ြစ်လဲ့

ကျတ ကတရားရင် or နဲ့တရားရပါမယ်။

Not(Inversion) ဆတ ကတတ ော့ ဆနဲ့်ကျင်ဘက်တ ပ င်ားတ ပါ။ true ှို not လုပရင false

ဖြစပပ်း၊ false ှို not လုပရင true ရပါတယ။ ထပမတရမာ and ှို not လုပရင or ရပပ်း၊ or ှို

not လုပရင and ရပါတယ။

ဥပမ ပရရင် Myanmar, English, Math စ တမားပ သားဘ သ တ ြရတယ်။

အ ားလားတအ င်ရင်တအ င်မယ်၊ တစ်ဘ သ ကျရင် ကျမယ်။

တအ င်တ က တရားရင်

Myanmar>=40 and English>=40 and Math>=40

ကျတ က တရားတအ
ော့ ခါ တစ်ဘ သ ကျရင် ကျတ ြစ်လဲ့

Myanmar<40 or English<40 or Math<40 ဆပပီား တရားရပါမယ်။

တအ င်တ က not လပ်ရင် ကျတ ရပါတယ်။ တအ င်တ ရဲ့ and က not လပ်တတ ော့ or

ရပါတယ်။ တစ်ခနဲ့ တစ်ခ နှိုင်ားယှဉ်ရင် ြစ်နင်တချ ၃ ခပ ရှပါတယ်။ ငယ်တ ၊ ညီတ နဲ့ ကကီားတ တဲ့

ြစ်ပါတယ်။ ဒီတတ ော့ တအ င်တ ရဲ့ >= က not လပ်တတ ော့ ကကီားတ သမ
ဲ့ ဟတ် ညီတ မဟတ်ရင်

ငယ်တ ပ ကျန်ပါတတ ော့တယ်။ ဒါတ က ငော့် <40 ြစ်တ ပါ။ ကျတ ရဲ့ ဆနဲ့်ကျင်ဘက်ကလည်ား

တအ င်တ ြစ်လဲ့ ကျတ က not လပ် ကညော့်ပါ။ တအ င်တ အတက် တရားထ ားတ ရပါလမော့်မယ်။

! (A ∧ B) =! A ∨ !B

! (A ∨ B) = !A ∧! B

ပထမ ပထ ားတော့ ! (A ∧ B) =! A ∨ !B က ညီတ က င်ား Truth table ကသားပပီား သက်တသ ပပါမယ်။

26 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

A B A∧B !(A ∧ B) !A !B !A V !B
0 0 0 1 1 1 1

0 1 0 1 1 0 1

1 0 0 1 0 1 1

1 1 1 0 0 0 0

အတ ြနှစ်ခတတနတ တတဲ့ရမှ ြစ်ပါတယ်။ ! (A ∨ B) = !A ∧! B ကလည်ား Truth table ဆပပီား

ညီတ က င်ားသက်တသ ပတပားပါ။

INVERSION law

!(!A)=A

A !A ! (!A)
0 1 0

1 0 1

Commutative law

A∧B=B∧A

AVB=BVA

အထားအဆန်ားတတ ော့ မဟတ်ပါဘား။ 2 * 3 = 3* 2၊ 2 + 3 = 3 + 2 ဆတ နဲ့ အတပါပ။ And (∧) ဟ

တ မ က်တ နဲ့ တပပီား၊ Or (V) ဟ တပါင်ားတ နဲ့ သတဘ ချင်ားတပါတယ်။

27 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Associative law

(A ∧ B) ∧ C = A ∧ (B ∧ C)

(A V B )V C = A V (B V C)

ဒါကလည်ား (2 * 3) * 4 = 2 * (3 * 4) ၊ (2 + 3) + 4 = 2 + (3 + 4) ဆတ နဲ့ အတပါပ။

Distributive law

A ∧ (B V C) = (A ∧ B) V (A ∧ C)

A V (B ∧ C) = (A V B) ∧ (A V C)

ဒါကလည်ား 2(3 + 5) = 2 * 3 + 2* 5 ဆတ နဲ့ အတပါပ။ ြနဲ့်လက်တော့ သတဘ ြစ်ပါတယ်။

2(3 + 5) = 2 * 8 = 16, 2 * 3 + 2* 5 = 6 + 10 = 16 အတတပါပ။

And law

A ∧ 0= 0

And က အ ားလားမှနမ
် ှ မှန်တ ြစ်တော့အတက် 0 နဲ့ and လပ်မှတတ ော့ တစ်ခက 0 ြစ်တနတော့အတက် 0 ပ

ထက်မှ ြစ်ပါတယ်။

A ∧ 1= A

And က အ ားလားမှနမ
် ှ မှန်တ ြစ်တော့အတက် တစ်ခက 1 ြစ်တနတတ ော့ A က 0 ဆ 0 ထက်မှ ြစ်ပပီား၊

A က 1 ဆ 1 ထက်မှ ြစ်ပါတယ်။

28 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

A ∧ A= A

A နဲ့ A and လပ်မှတတ ော့ တစ်ခက 0 ဆ ကျန်တစ်ခကလည်ား 0 အတ ြကလည်ား 0၊ တစ်ခက 1 ဆ

ကျန်တစ်ခကလည်ား 1 အတ ြကလည်ား 1 ဆပပီား ြစ်ပါတယ်။

A ∧! A= 0

A နဲ့ !A and လပ်မှတတ ော့ တစ်ခက 0 ဆ ကျန်တစ်ခက 1 ဒီတတ ော့ နှစ်ခလား 1 မဟတ်လဲ့ အတ ြက 0၊

တစ်ခက 1 ဆ ကျန်တစ်ခက 0 ဆတတ ော့ အတ ြက 0 ဆပပီား ြစ်ပါတယ်။

မင်သ တအ င် ပရရင်

A 0 A∧0 1 A∧1 !A A∧A A ∧ !A

0 0 0 1 0 1 0 0

1 0 0 1 1 0 1 0

Or law

A V 0= A

Or က အနည်ားဆား တစ်ခမှန်တ နဲ့ မှနတ


် ြစ်တော့အတက် တစ်ခက 0 ြစ်တနတတ ော့ A က 0 ဆ 0

ထက်မှ ြစ်ပပီား၊ A က 1 ဆ 1 ထက်မှ ြစ်ပါတယ်။

A V 1= 1

Or က အနည်ားဆား တစ်ခမှနတ
် နဲ့ မှနတ
် ြစ်တော့အတက် 1 နဲ့ Or လပ်မှတတ ော့ တစ်ခက 1

ြစ်တနတော့အတက် 1 ပ ထက်မှ ြစ်ပါတယ်။

A V A= A

29 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

A နဲ့ A or လပ်မှတတ ော့ တစ်ခက 0 ဆ ကျန်တစ်ခကလည်ား 0 အတ ြကလည်ား 0၊ တစ်ခက 1 ဆ

ကျန်တစ်ခကလည်ား 1 အတ ြကလည်ား 1 ဆပပီား ြစ်ပါတယ်။

A V! A= 1

A နဲ့ !A or လပ်မှတတ ော့ တစ်ခက 0 ဆ ကျန်တစ်ခက 1 ဒီတတ ော့ တစ်ခ 1 ြစ်လဲ့ အတ ြက 1၊ တစ်ခက

1 ဆ ကျန်တစ်ခက 0 ဆတတ ော့ အတ ြက 1 ဆပပီား ြစ်ပါတယ်။

Operator Precedence

အလပ်နှစ်ခ ယှဉ်ရင် ဘယ်အလပ်က ဦားစ ားတပားလပ်မလ ဆတ ရှသလဲ့ လကခဏ နှစ်ခ ယှဉ်

ရင် ဘယ်လကခဏ (operator)က အရင်ဦားစ ားတပားလပ်မလ ဆတော့ သတ်မှတ်ချက်ရှပါတယ်။ အဒီလ

ဦားစ ားတပား သတ်မှတ်တ က Operator Precedence လဲ့ တခေါ်ပါတယ်။

Priority Operators
1 ()
2 !
3 And (∧)
4 Or(∨)
အတပေါ်က Table မှ ပထ ားတော့ အစဉ်လက်အတင်ား အလပ်လပ်ပါတယ်။ ဆလတ က ()-

လက်သည်ားကင်ား ဟ ဦားစ ားတပား နပါတ်တစ် ြစ်ပါတယ်။ သပပီား ရင် not က ဒတယ ဦားစ ားတပား၊ ပပီားမှ

and နဲ့ or ြစ်ပါတယ်။ programming language တတ တပေါ်မတည်ပပီား Operator Precedence

သတ်မှတခ
် ျက်တတဟ အနည်ားငယ် က ပ ား တတ်ပါတယ်။

A∧B∨C

30 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

A ∧ B က အရင် လပ်ပပီား ရလ တော့ အတ ြကမှ C နဲ့ v လပ်မှ ြစ်ပါတယ်။ and က or ထက် priority

ပ မငော့်တော့ အတက်တ က ငော့် ြစ်ပါတယ်။

A ∧ (B ∨ C)

B ∨ C က အရင်လပ်ပပီား ရလ တော့ အတ ြကမှ A နဲ့ ∧ လပ်မှ ပါ။ လက်သည်ားကင်ားက priority ပ မငော့်လဲ့

ဦားစ ားတပားနပါတ်တစ် ြစ်တ တ က ငော့် ြစ်ပါတယ်။

!A ∧ (B ∨ C)

B V C နှငော့် !A က အရင်လပ်၊ ပပီားမှ အဒီကတန ရလ တော့ အတ ြနှစ်ခက ပန်ပပီား and( ∧) လပ်မှ

ြစ်ပါတယ်။ priority အတင်ား လပ်တ ြစ်ပါတယ်။

Solving Boolean algebra

And ဆတ တ မ က်တ နဲ့ တတယ်၊ or ဆတ တပါင်ားတ နဲ့တတယ်လဲ့ တ ပ ခော့ပါတယ်။ not က တတ ော့

bar တလားနဲ့တရားပါတယ်။

!(A ∧ B ∧ C) V !(!A V B)

= (ABC) + (A + B)

= (A + B + C) + A B

= A + B + AB + C

= A + B (1 + A) + C

= A +B 1 + C

= A +B + C

=(!A V !B V !C)

31 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

!(A ∧ B V A ∧ C) V (!A ∧ !B ∧ C)
= (AB+AC) + (A B C)

= ( A + B) (A + C) + (A B C)

=AA+AC+ A B+B C+ A B C

=A+A C+A B+B C+ABC

=A ( 1 + C + B + B C) + B C

= A. 1 + B C

=A + B C

=!A V (!B ∧ !C)

အခတက် ပတော့ ပစဆ နှစ်ပဒ်က တစ်ပဒ်ချင်ားရဲ့ တမားခန်ားနဲ့ ရှင်ားထ ားတော့ အတ ြနှစ်ခတညီတ က င်ား Truth

Table ဆပပီား သက်တသ ပပါ။

တအ က်က ပစဆ တလားတတ တလော့ကျငော့် ကညော့်ပါ။

1. တအ က်ပါတဲ့အတက် Truth Table ဆပါ။

a. A ∧ B ∧ C ∧ D,

b. A V B V C V D,

c. A xor B xor C xor D

d. Or Law က သက်တသ ပပါ။

e. De Morgan’s Theorem က သက်တသ ပပါ။

f. Distributive Law က သက်တသ ပပါ။

32 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

2. တအ က်ပါတဲ့က Laws တတသားပပီားရှင်ားတပားပါ။ ပပီားရင် ရှင်ားလဲ့ရတော့ အတ ြနဲ့ မရင်ား ကက်ညတ


ီ က င်ား

Truth Table ဆပပီား သက်တသ ပပါ။

a. (A ∧ B ∧ C) V (A ∧ B ∧ C ∧ D) V (A ∧ B)

b. !(A V B) V !A V !D ∧ (C ∧ D)

c. !(!A ∧ !B) ∧ (A V B V C)

Chapter အနစခ ျုပ

▪ အ ားလားမှနမ
် ှ အလပ်လပ်ချင်တယ်ဆရင် and, အနည်ားဆား တစ်ခမှန်တ နဲ့ အလပ်လပ်ချင်ရင် or,

တရင် 0 မတရင် 1 ထက်ချင်ရင် xor က သားရပါတယ်။

▪ True(1) က not လပ်ရင် False(0)၊ False(0) က not လပ်ရင် True(1) ရတယ်။

▪ And က not လပ်ရင် or၊ or က Not လပ်ရင် and ရတယ်။

▪ တစ်ခနတ
ဲ့ စ်ခ နှိုင်ားယှဉ်ရင် ြစ်နင်တချ သားခပရှပါတယ်၊ ငယ်တ ၊ ညီတ နဲ့ ကကီားတ တဲ့ ြစ်

ပါတယ်။

33 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

အခန်း (၃)

သခ္ချာဆိုငရျာ အခ ခခံမချာ်း

Integer, Double

ကိန့််းပြည့်ကိို integer လိိုို့ ခ ေါ်ပြ်းခ ၊ ဒဿမကိန့််းကိို float or double လိိုို့ခ ေါ်ြါ ယ့်။

INT() ကခ ဒဿမကိန့််းခ ွေ ဒဿမခနောက့်ြိုိင့််းပ ြု ့် ျပြ်း ကိန့််းပြည့်ခပြ င့််း ပ စ့်ြါ ယ့်။

INT (3.534) = 3, INT(-45.67)= -45

Absolute Values

Absolute ကခ အခြါင့််းကိန့််းပ စ့်ပ စ့်၊ အနှု ့်ကိန့််းပ စ့်ပ စ့် ြက ိ န့် ိုိ်း(အခြါင့််း)ကိို

ခပြ င့််း ျင့်ရင့် သို်းြါ ယ့်။

|34| = 34, |-4.5| = 4.5 , |-67|= 67

Floor, Ceiling and Round Functions

⌊x⌋ = floor of x , ⌈x⌉ = ceiling of x

ဒဿမကိန့််းဆိို အပမြဲ ကိန့််းပြညန


့် ှစ့် ို အကက ်းမှ ရှိြါ ယ့်။ Floor ဆိိုရင့်

အြဲဒကိန့််းပြည့်နှစ့် ိုထြဲက ငယ့် ကိိုယြ


ူ ါ ယ့်။ ceiling ဆိိုရင့် အြဲဒကိန့််းပြညန
့် ှစ့် ိုထြဲက

ကက်း ကိိုယူြါ ယ့်။ round ကခ ကျွန့်မ ိိုို့ လိုြ့်ခနကကအ င


ိို ့််းြြဲ .5 နြဲို့ အထက့်ဆိိုရင့် ်းိို ယူပြ်း၊

.5 ခအ က့်ဆိို ခလျ ယူ ြါ။ အလွေယ့်ခပြ ရရင့်ခ န်း ဘက့်


ြဲ ကိို ယူ ြါ။

34 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

⌊3.2⌋ = 3, ⌈3.2⌉ = 4, round (3.2) = 3

⌊3.7⌋ = 3, ⌈3.7⌉ = 4, round (3.7) = 4

⌊-3.5⌋ = -4, ⌈-3.5⌉ = -3, round (-3.5) = -4

⌊-3.1⌋ = -4, ⌈-3.1⌉ = -3, round (-3.1) = -3

(-3 နှင့် -4 မှ -4 ကငယ့် ပ စ့်လိိုို့ floor မှ -4 ရပြ်း, ceiling မှ -3 ရ ပ စ့်ြါ ယ့်၊ round

က ထို်းစအ င
ိို ့််း.5 ခအ က့်က ဒဘက့် .5 နြဲို့ အထက့်က ဟိိုဘက့် ဆိိုပြ်း န်း ကိိုယူ ြါ။)

ဒခလ က့်ဆိိုရင့်ခ Floor, Ceiling နှင့် Round ဟ လည့််း ဒဿမကိန့််းခ ွေကိို

ကိန့််းပြည့်ခပြ င့််း ြဲ ခနရ မှ သို်း သိခလ က့်ြါပြ။

Arithmetic Operators

+ 2+3=5

- 5–2=3
* 2 * 5 = 10
/ 7/2 = 3 (စ ားလဒ်)
Mod 7 mod 2 = 1 (အကြွင်ား)

25 mod 5 = 0, 9 mod 5 = 4 ပ စ့်ြါ ယ့်။ ဒခနရ မှ / operator ခလ်းက programming language

ခြေါ်မူ ည့်ပြ်း အလိုြ့်လိုြ့်ြို ကွေြဲပြ ်း ့် ခလ်း သ ိထ ်းခစ ျင့်ြါ ယ့်။ Java မှ ဆိိုရင့်

ကိန့််းပြည့်ကိို ကိန့််းပြည့်နြဲို့ စ ်းရင့် ကိန့််းပြည့်ရပြ်း (e.g. 5/2 =2)၊ အနည့််းဆို်း ဒဿမ စ့် ိုြါ နြဲို့

ဒဿမ ထွေက့်ြါ ယ့် (e.g. 5.0/2 = 2.5, 5/2.0= 2.5, 5.0/2.0 = 2.5)။ ဒါခြမြဲ PHP မှ ဆိိုရင့်ခ /

ဟ အပမြဲ ဒဿမ ထွေက့်ြါ ယ့်။ (e.g. 5/2 = 2.5, 5.0/2 = 2.5)

35 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Summation Symbol

ခြါင့််း ကိို သ ္ျ မှ ∑ (summation) နြဲို့ ကိိုယစ


့် ်းပြြုြါ ယ့်။
n
∑ ai bi = a1b1 + a2b2 + a3 b3 +….+anbn
i=1
summation symbol ∑ ခအ က့်မှ i သည့် 1 စမယ့်ခပြ ယ့်၊ ∑ အခြေါ်ကိိုကကည့်လိိုက့်ခ

n အထိသွေ ်းမယ့်၊ ဒါခကက င့် ပ နို့့်လိိုက့်ခ iခ ွေခနရ မှ 1 က စထည့်လိိုက့်ခ a1b1 , ပြ်းရင့် 2

ထည့်လိိုက့်ခ a2b2 , အြဲဒလိိုနြဲို့ n ထိ လိိုို့ခပြ အ


ြဲ ွေက့် anbn အထိသွေင့််းြါ ယ့်။ ∑ ပ စ့် ြဲအ ွေက့်

စ့် ိုနြဲို့ စ့် ိုကက ်း အခြါင့််း လကခဏ ထည့်လိိုက့်ခ ည ဘက့်ပ မ့််းမှ ပ နို့့်ပြထ ်း ြဲ အ ိိုင့််း

a1b1 + a2b2 + a3 b3 +….+anbn ဆိိုပြ်း ထွေက့်လ ပ စ့်ြါ ယ့်။

ဒ ∑ မှ က ထူ်းဆန့််းြါ ယ့်။ i န့် ိို်းသည့် 1 ကခနစမယ့် n အထိလိိုို့ခပြ ထ ်းခြမြဲ ∑

ခနောက့်မှ က c ြြဲြါြါ ယ့်၊ i အစ ်းထိို်းစရ မြါြါဘူ်း။ ဆိိုကကြါစိိုို့ n =3 လိိုို့။ c + c+ c ပ စ့်ြါမယ့်။ c

ကိို 3 ါ ခြါင့််း ဟ c*3 နြဲို့ အ ူြါြြဲ။ ကယ့်လိိုို့ n=5 ဆိို ြဲရင့် c+c+c+c+c ပ စ့်ြါမယ့်။

အြဲဒါကလည့််း c*5 နြဲို့ အ ူြါြြဲ။ ထပခါ ထပခါ ခပါင်းတျာက ခ မျာကတျာနဲ့တူပပ်း၊ ထပခါ ထပခါ

နှုတတျာက စျာ်းတျာနဲ့ အတူတူပါပ။


5
∑ a2 = 12 + 22 + 32 + 42+ 52 = 1+ 4+ 9+ 16 + 25 = 55
a=1
summation symbol ∑ ခအ က့်မှ a သည့် 1 စမယ့်ခပြ ယ့်၊ ∑ ခြေါ်ကိိုကကည့်လိိုက့်ခ

5 အထိသွေ ်းမယ့်၊ ဒါခကက င့် ပ နို့့်လိိုက့်ခ a ခနရ 1 အစ ်းထိို်းခ 12, 2 အစ ်းထိို်းခ 22

အြဲဒလိိုနြဲို့ သူခပြ ြဲ 5 အထိ အစ ်းထိို်းသွေ ်းြါ ယ့်။ ∑ ဆိို ြဲ အ ွေက့် ကက ်းထြဲမှ အခြါင့််း

36 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

လကခဏ ထည့်သွေ ်းြါ ယ့်။ ဒခလ က့်ဆိို ∑ (summation symbol) အခကက င့််း

နော်းလည့်ခလ က့်ြါပြ။

ဒါဆိိုရင့် ခအ က့်က ပြထ ်း ခလ်း နှစ့်ြဒ


ို ့်ကိို ∑ သို်းပြ်း ခရ်းကကည့်ကကည့်ခြ်းြါ။

-1 + - 2 + -3 + -4 + -5 + -6 + -7

1+ 1/2 + 1/3 + ¼ + ……+ 1/100

ခပါင်း ခင်း Formula မချာ်း

၁,၂,၃ စသည့်ပ င့် အစဉ့်လိိုက့်ပ စ့် ြဲ ကိန့််းခ ွေ ခြါင့််း အ


ြဲ ါမှ အလွေယ့်သို်းလိိုို့ရ ြဲ formula

ပ စ့်ြါ ယ့်။ မှန့်သလ ်း မမှနဘ


့် ူ်းလ ်း ွေက့်ကကည့်ကကရခအ င့်လိိုို့ 1 ကခန 5 ထိ ခြါင့််းကကည့်ြါမယ့်။

1 + 2 + 3 + 4+ 5 = 15

ြခ
ို သနည့််းနြဲို့ ထည့် ွေက့်ကကည့်ြါမယ့်။ n ဆိို ခနောက့်ဆို်းဂဏန့််း (အကက်းဆို်းဂဏန့််း)

န့် ိို်း ပ စ့်ြါ ယ့်။ ၁ ကခန ၅ အထိခြါင့််း ြဲ ခနရ မှ ၅ သည့် အကက်းဆို်း ခနောက့်ဆို်းကိန့််းပ စ့်လိိုို့ n

န့် ိို်းသည့် 5 ပ စ့်ြါမယ့်။ ဒါခကက င့်

n (n+ 1)/ 2 = 5 (5+1) / 2 = (5*6) / 2 = 30 / 2 = 15 ရြါ ယ့်။

37 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

1 ကစ မျိြု်းမဟို ြ
့် ြဲ စ ျင့် ြဲ ဂဏန့််းကခနစပြ်း အစဉ့်လိိုက့်ပ စ့် ြဲ ကိန့််းဂဏန့််းခ ွေ

ခြါင့််း အ
ြဲ ါမှ အလွေယ့်သို်းလိိုို့ရ ြဲ formula ပ စ့်ြါ ယ့်။ Formula မှ ခ စ ြဲ ဂဏန့််းကိို m

လိိုို့ခ ေါ်ပြ်း၊ ခနောက့်ဆို်းဂဏန့််းကိို n လိိုို့ သ ့်မှ ့်ထ ်းြါ ယ့်။ မှနသ


့် လ ်း မမှန့်ဘူ်းလ ်း

ွေက့်ကကည့်ကကရခအ င့်လိိုို့ 5 ကခန 10 ထိ ခြါင့််းကကည့်ြါမယ့်။ 5 သည့် စ ြဲဂဏန့််းပ စ့်လိိုို့ m ပ စ့်ပြ်း၊

10 ကခ ခနောက့်ဆို်းကိန့််းပ စ့်လိိုို့ n ပ စ့်ြါမယ့်။ ြခ


ို သနည့််းထြဲ အရင့်ထည့် ွေက့်ကကည့်ြါမယ့်။

10 (10+1)/2 - 5 ( 5-1) /2 = (10*11)/2 – (5* 4)/2 = 55 – 10 = 45

ြမ
ို ှနအ
့် င
ိို ့််း ွေက့်ကကည့်ြါမယ့်။

5 + 6 + 7+ 8 + 9 + 10 = 45

နှစ့်ထြ့်ကိန့််းခ ွေကိို အစဉ့်လိိုက့် ခြါင့််း ြဲ ြခ


ို သနည့််းပ စ့်ြါ ယ့်။ ြိုခသနည့််းမှ ခ 0

စ ယ့် ခပြ ထ ်းခသ ့်လည့််း အမှနက


့် ခ 1 ကခန စလည့််း အ ူ ူြါြြဲ။ 02 က ခြါင့််းလည့််း

န့် ိို်းမခပြ င့််းလိိုို့ြါ။ ဒခ 1 နှစ့်ထြ့် ကခန 5 နှစ့်ထြ့် အထိ ခြါင့််းကကည့်ကကရခအ င့်။ 5

နှစ့်ထြ့်အထိလိိုို့ ခပြ အ
ြဲ ွေက့် n န့် ိို်းသည့် 5 ပ စ့်ြါမယ့်။ ြခ
ို သနည့််းထြဲ အရင့်ထည့်

ွေက့်ကကည့်ရခအ င့်ြါ။

5(5+1)(2*5+1)/6 = (5 * 6 * 11)/6 = 330/ 6 = 55

ြမ
ို ှန့် ွေက့်ကကည့်လည့််း 55 ြါြြဲ။12 + 22 + 32 + 42+ 52 = 1+ 4+ 9+ 16 + 25 = 55

38 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

ဒါကခ 3 ထြ့်ကိန့််း အစဉ့်လိိုက့် ခြါင့််း ြဲ Formula ပ စ့်ြါ ယ့်။ ကြဲ ၁ ကခန 5 အထိ 3

ထြ့်ကိန့််းခ ွေ ခြါင့််းကကည့်ကကရခအ င့်ြါ။

n = 5, [ (5*6)/2 ]2 = 152 = 225

ြမ
ို ှန့် ွေက့်ကကည့်ကကရခအ င့်။ 1 + 8 + 27 +64 + 125 = 225

ဒ Formula ခလ်းကခ အခရအ ွေက့် ွေက့်နခ


ြဲို့ နရ မှ အလွေန့် အသို်းဝင့်ြါ ယ့်။

နမူနောခပြ ရရင့် 1 ကခန 10 အထိ ဘယ့်နှစ့်လို်းရှိသလြဲဆိို လူ ိိုင့််းအလွေယ့်သိြါ ယ့် 10 လို်းခြါ။ ဒါဆိို

2 ကခန 5 ဆိိုရင့်ခက ဘယ့်နှစ့်လို်း ရှိသလြဲဆိို နည့််းနည့််း ခကက င့်သွေ ်း ြ


့် ါ ယ့်။ ဒြိုခသနည့််းနြဲို့

ွေက့်လိရ
ိုို့ ြါ ယ့်။ စ က m, ဆို်း က n၊ ဒခ

5+1 – 2 = 6 – 2 = 4 ဆိို ြဲ အ ွေက့် 4 လို်းြါ။

ဒမှ ကိန့််းစဉ့် န့််းနည့််းနည့်ခလ်း ခလ်းငါ်း ဆယ့်လို်းနြဲို့ စမ့််းပြခနလိိုို့သ ြမ


ို ှန့် ွေက့် နည့်
ြဲ ်းက

ွေက့်လိိုို့ ရခနခသ်း ြါ။ ကယ့်လိိုို့ ၁ ကခန ၁၀၀၀ ၊ိိုို့ ၁ ကခန ၁၀၀၀၀ ို့ဆ
ိို ိိုို့ ြမ
ို ှန့် ျ ွေက့် ို့ိို

မလွေယ့်ြါဘူ်း။ Calculator နြဲို့ ွေက့်မယ့်ဆိိုရင့်ခ င့် ၁ ကခန ၁၀၀၀ ထိဆိိုရင့် ရိိုက့်ခနရ ကိို

မလွေယက
့် ူလှြါဘူ်း။ အ ျိန့်အခ ့်ယူြါလိမ့်မယ့်။ မှ ်းရိိုက့်မိ လည့််း ပ စ့်နင
ိို ့်ြါခသ်း ယ့်။

ဒအ ွေက့် ယ ိုခပြ ပြ ြဲ အခပ Formula ခ ွေက သိထ ်း ို့ိို လိိုြါ ယ့်။ လူခ မ
ွေ ှ စ့် ို ျင့််း

ရိိုက့်ခြါင့််းခနရင့် ကက ပြ်း မှ ်း ့်ခသ ့်လည့််း၊ Formula သို်းရင့် ပမန့်သလိို computer မှ လြဲ

39 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

အ ူ ူြါြြဲ။ ဒါခကက င့် စ့် ိုမှ ့်ထ ်းခစ ျင့် က computer program ခ ွေခရ်း ြဲ အ ါမှ

ထြ့် ါ ထြ့် ါ စ့် ို ျင့််း ွေက့် ထက့် Formula သို်း ွေက့် ပမန့် ြဲအ ွေက့် ့်နင
ိို ့်သမျှ

Formula သို်းပြ်း program ခ ွေ ခရ်းသင့်ခကက င့််းြါ။

ကြဲ ခအ က့်က ြိုစဆ ခလ်းခ ွေကိိုခ ခလကျင့် ြဲအခနနြဲို့ ွေက့် ျက့်ကကည့်ကကည့်ြါ။

1. 1 + 2 + 3+ 4+ ……+10000

2. 45+ ……+999

3. 49 ကခန 512 အထိဆိိုရင့် ကိန့််းဂဏန့််း ဘယ့်နှစ့်လို်းရှိလြဲ ွေက့် ျက့်ြါ။

4. 1 မှ 100 ထိ နှစ့်ထြ့်ကိန့််းမျ ်းခြါင့််းလဒ့်နှင့် သို်းထြ့်ကိန့််းမျ ်းခြါင့််းလဒ့်ကိို ရှ ခြ်းြါ။

5. Find ∑20
1 5 and ∑45 10.
70

Factorial

Factorial ကိို ! နြဲို့ ကိိုယစ


့် ်းပြြုပြ်း n! (n factorial) ဆိို n ကခန 1 အထိ

ခပမ က့်သွေ ်း ြါ။ 0! နြဲို့ 1! န့် ိို်းက 1 ပ စ့်ြါ ယ့်။

n! = n * (n-1) * ….* 3 * 2 * 1

0! = 1, 1! = 1

2! = 2 * 1 = 2 * 1! = 2

3! = 3 * 2 * 1 = 3 * 2!

4! = 4 * 3* 2 * 1 = 4 * 3!

40 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

ဒကခန မှ ့်လိရ
ိုို့ က n! = n (n -1)! ပ စ့်ြါ ယ့်။ ခပြ င့််းပြန့်ပြန့် ွေက့်လိလ
ိုို့ ည့််း ရြါခသ်း ယ့်။

4! = 4 * 3 * 2 * 1

3! = 3 * 2 * 1 = 4! / 4

2! = 2* 1 = 3!/3

(𝒏+𝟏)!
𝒏! =
(𝒏+𝟏)

Permutation and Combination

Permutation ဆိို n ိုရှိ ြဲ elements ခလ်းခ ွေကိို ကိိုယ့်လိိုသခလ က့်

ယူပြ်း ွေြဲ ပ စ့်ြါ ယ့်။ Permutation က order ကိို ထည့်ပြ်း စဉ့််းစ ်းြါ ယ့်။ Combination

ကခ order ကိို ထည့်မစဉ့််းစ ်းြါဘူ်း။

Permutation Combination

n=3,r=3 N=3,k=3

3! / (3-3)! = 3! / 0! = 6/1 = 6 C(3,3) = 3! / [3! ( 3 – 3 )!] = 3!/ 3! = 1

3 ိုရှိ ABC, ACB, BAC, BCA, CAB, CBA ABC

3 ိုစ ွေြဲ 3P3 = 3! / 0! = 3* 2* 1 = 6 C(3,3) = 3! / (3! * 0! ) = 3! / 3! = 1

41 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

3 ိုရှိ AB, AC, BA, BC, CA, CB AB, AC, BC

2 ိုစ ွေြဲ 3P2 = 3! / 1! = 3! = 6 C(3,2 ) = 3! /[2! (3-2)!]

= ( 3* 2!) / (2! * 1)= 3

Order ကိို ထည့်သွေင့််းစဉ့််းစ ်း Orderကိို ထည့်သွေင့််းမစဉ့််းစ ်း အ


ြဲ ွေက့်

ပ စ့် ြဲအ ွေက့် AB နြဲို့ BA က မ ူြါဘူ်း။ AB နြဲို့ BA က ူ ယ့်လိိုို့ ယူဆြါ ယ့်။

Fibonacci Series

Fibonacci Series ဆိို ခရှှေ့ နှစ့်လို်းခြါင့််းရင့် ခနောက့် စ့်လို်းရ ြါ။

F3 = F2 + F1

F4 = F3 + F2

Fn = Fn-1 + Fn-2

F0=0 , F1=1 လိိုို့ ထ ်းကကည့်မယ့်ဆိိုရင့် Fibonacci Series ဟ ခအ က့်ြါအ င


ိို ့််း ရြါမယ့်။

F2 = F1 + F0, F2 = 1 + 0 =1

F0,F1, F2, F2, ……….

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ……

42 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Exponents and Logarithms

23 = 8, 2-3 = 1/ 23 = 1/8 = 0.125

272/3 = (33) 2/3 = 32 = 9

ဒခနရ မှ သ ိထ ်းခစ ျင့် က - (အနို ့်) န့် ိို်းကိို 1/3 ထြ့်ရှ လိိုို့ရြါ ယ့်။ ဘ ခကက င့်လြဲ

1
ဆိိုရင့် အနို ့်ကိို မကိန့််းထြ့် င့်ရင့် အနို ့်ရလိိုို့ အနို ့်ကိန့််းကိို 1/3, 1/5 စ ြဲ ထြ့်ခ ွေ
မြွိနား်

င့်ပြ်း ွေက့်လိိုို့ရြါ ယ့်။

အနှု ့် * အနှု ့် = အခြါင့််း

အနှု ့် * အခြါင့််း = အနှု ့်

အနှု ့် * အနှု ့် * အနှု ့် = အခြါင့််း * အနှု ့် = အနှု ့်

-271/3 = (-33) 1/3 = -3

သိခ
ိုို့ သ ့် -41/2 ဆိိုရင့်ခ အခပ ရှ လိိုို့ရမှ မဟို ြ
့် ါဘူ်း။ အနို ့်ကိို စိုကိန့််းထြ့် င့်ရင့် + ြြဲ

1
ရြါ ယ့်။ ဒါခကက င့် အနို ့်ကိို ထြ့် င့်ပြ်း ွေက့်လိိုို့မရြါဘူ်း။
စုံြွိနား်

y= logb x ➔ by = x

log2 8 = 3 ➔ 23 = 8

log10 100 = 2 ➔ 102 = 100

log10 0.001 = -3 ➔ 10-3 = 0.001

logb 1 = 0 ➔ b0 = 1

logb b = 1 ➔ b1 = b

43 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

ခအျာကက ပိုစဆျာခ ်းခတွေ ခ ေ့ကခငေ့ကကညေ့ပါ။

1. Find floor, ceiling and round of the following numbers.

-7.8, 7.4, √30, π


3

2. 29 mod 8, -372 mod 8, -36 mod 3

3. 2-5, 82/3, 16-4/3, log2 16, log10 10000, log2 (1/8), log2 0.125

4. ခအ က့်ြါ ို့က
ိို ိို log ြစ
ို ပ င့် ပြန့်ခရ်းပြြါ။

a) 104

b) 25

c) 1/1000

d) 1/27

5. Find 6!, 0!, 1!, -1! and 8!.

6. Find 4P2, C(4,2), 4P3, C(4,3).

7. Decimal number မှ 0 to 9 ဆိိုပြ်း ွေင့်ပြြု 10 လို်းရှိြါ ယ့်။ 3 digit lottery မှ

ဂဏန့််းအ ခ
ွေြဲ ြါင့််း ဘယ့်နှစ့်လို်းရမလြဲဆိို ွေက့်ခြ်းြါ။

8. မ်း ခသ တ မှ 0 to 9 ဆိိုပြ်း လို ခ


့် လ်း 10 ိုရှိြါ ယ့်။ key ဟ 7 လို်းထ ်းရ ယ့်ဆိိုြါခ ။

ဒါဆိို key ပ စ့်နင


ိို ့် ြဲ 7 လ်းို အ ခ
ွေြဲ ြါင့််း မည့်မျှရှိြါသလြဲ။ ကယ့်လိိုို့ key ဟ 8 လို်းထ ်းရ ယ့်

ဆိိုရင့်ခရ ဘယ့်နှစ့် ြဲရ


ွေ နိိုင့်ြါသလြဲ။

44 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

9. F, R, I, E, N, D ဆိို ြဲ character 6 လို်းကိို ခြ်းပြ်း စက ်းလို်းဆက့် မှ FRIEND လိိုို့ မဟို ြ


့် ြဲ

မှ ်းဆက့် ဘယ့်နှစ့် ိုရှိနိိုင့်ြါသလြဲ။

10. လိုြ့်ငန့််း ွေင့်မှ လူ 15 ခယ က့်ရှိြါ ယ့်။ သူ ိုို့ိထြဲက 5 ခယ က့်ကိိုအ ွေြဲှေ့ ှေ့ွေြဲ ပြ်း အလိုြ့် စ့် ိုလိုြ့် ို့ိို

လွေ ့်ခြ်းရြါမယ့်။ ခရ်း ျယ့်စရ ဘယ့်နှစ့် ွေြဲှေ့ ရှိြါမည့်နည့််း။

11. F0=1, F1 = 2 and then Find F0 to F15.

Chapter အနှစခချုပ

အ န့််းအကျယ့်ကက်း စ့် န့််းထြဲ ိုခ ွေ န့််းစပြ်း ထည့်မယ့်။ ဘယ့်နှစ့် ို ဆလြဲသိ ျင့် ယ့်။

သ ္ျ မရ ြဲသူက ဘယ့်နှစ့် ိုဆသလြဲသိရခအ င့် ိုခ ွေအမျ ်းကက်းကိို အ ျိန့်ကိုန့် ၊လူြင့်ြန့််း ခရှေ့ပြ်း

ခနရ ျကကည့် ယ့်။ သ ္ျ ရ သူ


ြဲ ကခ အ န့််းအကျယ့်ကိို ိိုင့််း ယ့်၊ ို စ့် ိုရှေ့ြဲ ဆိိုဒ့်ကိို


ိို ့််း ယ့်၊ စ့် ိုနြဲို့ စ့် ိုကက ်း ဘယ့်ခလ က့်ခနရ ပ ်းမလြဲ င
ိို ့််း ယ့်။ ပြ်းခ စ ရက့်ခြေါ်မှ

ျ က
ွေ ့်လိိုက့် ယ့်။ အခပ န့််းထွေက့်လ ယ့်။ ိုခ ွေ ခရှေ့ကကည့်စရ မလိိုခ ဘူ်း။

ပြ်းခ လူခ ွေ ွေက့် ျက့် အ


ြဲ ါမှ လြဲ ထြ့် ါ ထြ့် ါ ွေက့် ျက့် က ကက ၊့်

မှ ်း ့်သလိို Program စ့် ိုကိို ခရ်းသ ်း ြဲအ ါမှ ထြ့် ါ ထြ့် ါ လိုြ့် မျိြု်းခ ွေက

ွေက့် ျက့် ြဲ အ ျိန့် ကက ခစြါ ယ့်။ Formula နြဲို့ ွေက့် က ပမန့်ခစြါ ယ့်။ ဒါခကက င့် ထြ့် ါ

ထြ့် ါ ွေက့် ျက့် ခ ွေ အစ ်း အလျင့််းသင့်သလိိုို့ Formula ခ ွေ ကိို အသို်းပြြုသင့်ြါ ယ့်။

ဒါခကက င့် Formula ခလ်းခ ွေ သိထ ်းသင့်ြါ ယ့်။ ခပြ ပြ်းသ ်း ထြ့်ခပြ ရရင့် စ အိုြထ
့် ြဲ

ျ က
ွေ ့်ကကည့်ြါခနော့်။ ပြ်းခ ထြ့် ါ ထြ့် ါ ခြါင့််း က ခပမ က့် နြဲို့ ူပြ်း၊ ထြ့် ါ ထြ့် ါ

နှု ့် က စ ်း နြဲို့ ူ ခလ်းလြဲ သ ိ ျြ့်ြါ။

45 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

“စ ွေက့်ခန ြဲအ ျိန့် စ ်းြွေမ


ြဲ ှ ထိိုင့်၊

ခဘ်းမှ Coffee ခလ်း စ့် ွေက့် နြဲို့

သ ျင့််းခလ်းက ွေင့်ထ ်း

သိြမ
့် က
ိို ့် ြြဲ”

46 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

အခန်း (၄)

Statistics ဆိုငရာ အခ ခခံမ ာ်း

Set Theory

Disjoint and Overlapping

Disjoint ဆိုတာက တစ်ခို နှင် တစ်ခို ဘိုတူတာမပါပဲ သီီးခခာီးစီ ခြစ်နေတာကိုနခပာတာပါ။

န ာက်ကပတ
ို ွင် Set A မှာ ပါတာက 1,3,5၊ Set B မှာ ပါတာ 6၊ ဒီနတာ တူတာ မရှပါဘူီး။ ဒါန ကာင်

A နှင် B ဟာ disjoint ခြစ်ပါတယ်။

Overlapping ဆိုတာ ထပ်နေတာပါ။ ဘိုတူနေတာ ပါတဲ ဓပပါယ်ခြစ်ပါတယ်။ န ာက်မာှ

ခပထာီးတဲပမ
ို ှာ Set A ေဲဲ့ Set B မှာ 5 ဆိုတာန ီး ဘိုပါနေတာ ခြစ်တဲ တွက် Overlapping

ခြစ်နေတာပါ။

47 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Union (U) and Interset (∩) and Difference (-)

▪ Union(U) ဆိုတာ or ေဲဲ့ တူပါတယ်။ ဘယ်ဟာမှာ ပါပါ ေည်ီးဆိုီး တစ်ခိုမာှ ပါရင်ပပီီးတာပဲ

ဆိုတဲ ဓပပါယ်ပါ။

▪ Interset (∩) ဆိုတာ and ေဲဲ့ တူပါတယ်။ and ဆိုတာ ာီး ိုီးမှာ ပါရမယ် ဘိုတူတဟာ
ဲ ဆိုတဲ

ဓပပါယ်ပါ။

▪ Difference ဆိုတာကနတာ ခခာီးေ ီးခခင်ီး (နှုတ်ခခင်ီး)၊ တူတာ ြယ်ပစ်တယ် ဆိုတဲ ဓပပါယ်ပါ။

A = {1, 3, 5}, B = {6}

A U B = {1, 3, 5, 6 } , A ∩ B = {}, A – B = {1,3,5}, B-A ={6}

A = {6, 5}, B = {1, 3, 5}

A U B = {1, 3, 6, 5}, A ∩ B = {5}, A – B = {6}, B-A = {1, 3}

48 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Probability

Probability Example:

ြဲချပ် Cards နတွဟာ probability တွက် နကာင်ီးဆိုီး ေမူေ ခြစ် ိုဲ့ ဒီမှာ ဲ ဲဒါေဲပ
ဲ့ ဲ

ေမူေ ခပသွာီးပါမယ်။ ခမင်သာန ာင် ပန


ို ီးေဲဲ့ ခပထာီးနပီးပါတယ်။

ပမ
ို ှာ row ိုက် ကည် ကည် ိုက်ရင် ြဲထိုတ် တစ်ထိုတ်မှာ Clubs 13 ချပ်၊ Diamonds 13

ချပ်၊ Hearts 13 ချပ် ေဲဲ့ Spades 13 ချပ် ဆိုနတာ စိုစိုနပါင်ီး ြဲချပ်နပါင်ီး 52 ချပ်ရှပါတယ်။

Row ေဲဲ့ column တွဲ ကည် ိုက်ရင် Clubs 13 ချပ်မှာမှ Ace ပါတာ 1 ချပ်၊ 2,3,4,5,6,7,8,9,10

ပါတာ 1 ချပ်စီ၊ Jack က 1 ချပ်၊ Queen က 1 ချပ် ေဲဲ့ King က 1 ချပ် တိုဲ့ ခြစ်ပါတယ်။ Diamonds,

Hearts, Spades တဲ့မ


ို ှာ ဲ ထိုဲ့ တူပဲခြစ်ပါတယ်။

ပပီီးနတာ ပမ
ို ှာ ကည် ိုက်ရင် သသာတာက Clubs နှင် spades ဟာ ေက်နရာင်နတွခြစ်ပပီီး၊

Diamonds ေဲဲ့ Hearts ကနတာ ေီနရာင်နတွ ခြစ်ပါတယ်။

49 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Probability Formulas

Probability ဆိုတာ ဘယ်န ာက် ခြစ်နင


ို ်နခခရှတယ်ဆိုတာကို တွက်ချက် တာခြစ်ပါတယ်။

ကိုယလိုခ ငတဲ့ အရာရဲ့ ြစနင


ို တဲ့ အကကမအခရအတွကကို တညပ ်းခတာဲ့ စိုစိုခ ေါင်း ြစနိုငခခ နဲ့

စာ်းရတာ ေါ။

𝑁𝑢𝑚𝑏𝑒𝑟 𝑜𝑓 𝑜𝑐𝑐𝑢𝑟𝑟𝑒𝑛𝑐𝑒𝑠 𝑜𝑓 𝑡ℎ𝑒 𝑒𝑣𝑒𝑛𝑡


𝑃(𝑒𝑣𝑒𝑛𝑡) =
𝑇𝑜𝑡𝑎𝑙 𝑁𝑢𝑚𝑏𝑒𝑟 𝑜𝑓𝑡𝑟𝑎𝑖𝑙𝑠 𝑜𝑟 𝑜𝑢𝑡𝑐𝑜𝑚𝑒𝑠

Probability ဆိုတဲ ခြစ်နင


ို ်နခခဟာ 100% ထက်ပိုပပီီး မခြစ်နင
ို ်ပါဘူီး။ 100% ကို

ကေ်ီးဂဏေ်ီး ိုနခပာရင်နတာ 1 ခြစ်ပါတယ်။ ဒါန ကာင်

𝑃(𝐴) + 𝑃(À) = 1

ဆို ိုတာက A ရဲဲ့ probability ေဲဲ့ A မဟိုတတ


် ဲ probability နပါင်ီးရင် ၁ ရပါတယ်။

𝑃(À) = 1 − 𝑃(𝐴)

ဒါန ကာင် P(not A) ကို (not A ဆိုတာ ွယ်နခပာတာပါ၊ complement of A ိုဲ့နခေါ်ပါတယ်)

ိုချင်ရင် 1 ထဲက P(A) နိုတ်တာေဲဲ့ တူတူပါပဲ။

1, 2, 3, 4, 5, 6 ဆိုပပီီး 6 မျက်နှ ရှတဲ ေ်စာတီးို တစ်တိုီးကို ပစ် ိုက် ိုဲ့ 2 ဂဏေ်ီး ကျနင
ို ်တဲ

probability နှင် ၂ ဂဏေ်ီးမဟိုတန


် သာ ခခာီးဂဏေ်ီးမျာီးကျတဲ probability ကို တွက်ချက် နပီးပါ။

Number of occurrences of the 2 = 1 (2 ဂဏေ်ီးသည် တစ်မျက်နှ မှာပဲ ပါ )ိုဲ့

Total number of trails or outcomes = 6 (စိုစိုနပါင်ီး 6 မျက်နှ )

50 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

P (2) = 1/6 , P(not 2) or P (1 or 3 or 4 or 5 or 6)= 1 – 1/6 = 5/6

ရာခိုင်နှုေ်ီးေဲဲ့ ခပမယ်ဆိုရင်နတာ 100 ေဲဲ့ နခမာက်နပီးရပါတယ်။

ေ်စာတီးို ကို နခမာက် ိုက် ိုဲ့ ၂ ကျနင


ို ်တဲ ရာခိုင်နှုေ်ီး 1/6*100 = 16.67% ခြစ်ပါတယ်။

ေ်စာတီးို ကို နခမာက် ိုက် ိုဲ့ ၂ မဟိုတန


် သာ (၁ သမ
ိုဲ့ ဟိုတ် ၃ သမ
ိုဲ့ ဟိုတ် ၄ သမ
ိုဲ့ ဟိုတ် ၅

သမ
ိုဲ့ ဟိုတ် ၆) ကျနင
ို ်တဲ ရာခိုင်နှုေ်ီး 5/6*100 = 83.33% ခြစ်ပါတယ်။

16.67% + 83.33% = 100% ခြစ်ပါတယ်။ ရာခိုင်နှုေ်ီး ာီး ိုီးနပါင်ီးရင် 100 ပါပဲ။ 100

ထက်မနကျာ်ပါဘူီး။

P (‘2’ of spades) =?

No of ‘2’ of spades =1

( နပေါ်ကပက
ို ိုသွာီး ကည်ပါ spades row ထဲမှာ 2 ခြစ်တာ 1 ခိုပဲရပါတယ်
ှ )

Total Number of cards = 52 (စိုစိုနပါင်ီး 52 ကဒ်)

P (‘2’ of spades) = 1/52

P (a king of red color) = ?

No of king of red color = 2 (စိုစိုနပါင်ီး King 4 ချပ်မှာ ေီနရာင်ကနတာ 2 ချပ်ပဲ ရှပါတယ်။)

P(a king of red color) = 2/52

51 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

တကယ် ိုဲ့ P(not king of red color) တွက်နပီးပါဆိုရင်

P(not king of red color) = 1 – 2/52 = 50/52

P(a non-face card) = ?

Total number of face card out of 52 cards = 12 (Jack 4 + Queen 4+ King 4)

P (face card) = 12/52

12 52 − 12 40 10
𝑃(𝑎 𝑛𝑜𝑛_𝑓𝑎𝑐𝑒 𝑐𝑎𝑟𝑑) = 1 − = = =
52 52 52 13

Or logic in Probability

For Mutually Exclusive Events (disjoint)

P (A or B) or P(A∪B) = P(A)+P(B)

For Non-Mutually Exclusive Events (Overlap)

P (A or B) or P(A∪B) = P(A)+P(B)−P(A and B)

P(King or Queen) ကို တွက်နပီးပါ။

(မမှတမ
် ရင် နပေါ်မှာ နခပာခဲတဲ ပက
ို ိုခပေ် ကည်ပါ။ King ထဲမှာ Queen ပါနေတာ၊ Queen

ထဲမှာ King ပါနေတာမရှတဲ တွက် disjoint ခြစ်တဲ Mutually Exclusive Events

ပန
ို သေည်ီးကို သိုီးပပီီး တွက်ရပါတယ်။)

Let Event (A) = King, Event (B) = Queen

52 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

P(AUB) = P(A)+P(B)= 4/52 + 4/52= 8/52 =2/13

P(spades or jack ) ကို တွက်ပါမယ်။

(spades 13 ချပ်ထဲမှာ jack 1 ချပ်ပါနေ ိုဲ့ Non-Mutually Exclusive Events(Overlap)

ပန
ို သေည်ီးေဲဲ့ တွက်ပါမယ်။)

P(spades ) = 13/52

P(jack)= 4/52

P(spades and jack )=1/52

P(spades or jack) = P(A)+P(B)−P(A and B)

= 13/52 + 4/52 – 1/52 = 16/52 = 4/13

P(neither spades nor a jack) = 1 – 4/13 = 9/13

And Logic in Probability

For Independent Events

P(A and B)= P(A ∩ B) = P(A)×P(B)

For Dependent Events (Conditional Probability)

P(A ∩ B)
P(A⁄𝐵 ) = , P(A ∩ B) = P(A/B) * P(B)
P(B)

P(A ∩ B)
P(B⁄𝐴) = , P(A ∩ B) = P(B|A) * P(A)
P(A)

53 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

52 ချပ်ထဲ က တစ်ချပ်ပပီီးတစ်ချပ် စိုစိုနပါင်ီးနှစ်ချပ်ကို ဆွဲယပ


ူ ါမယ်။ ပထမတစ်ကဒ်ကို ယူပပီီး

ခပေ်မထညပ
် ါဘူီး။ ပထမတစ်ကဒ်က Club ခြစ်ပပီီး၊ ဒိုတယ တစ်ကဒ်က spade ခြစ်တဲ probability ကို

တွက်ပါ။

Let Event (A) = the first card is Club,

Event (B) = the second card is Spade

P(A) = 13/52

P(B/A) = 13/51 (မမှတ်မရင် နပေါ်မှာ နခပာခဲတဲ ပက


ို ိုခပေ် ကည်ပါ။ ခပေ်မထည်ဘူီး

ိုန
ဲ့ ခပာတဲ တွက် dependent formula ေဲဲ့ တွက်ပါမယ်။ တကဒ်ယူပပီီးသာီးခြစ် ိုဲ့ 51 ကဒ်ပဲ

ကျေ်ပါမယ်။ ဲဒီ 51 ကဒ်ထဲမှာမှ spade က 13 ချပ် ရှပါတယ်။)

P(A∩B) = P (B/A) * P(B)

13 13 169
= ∗ =
52 51 2652

52 ချပ်ထဲ က တစ်ချပ်ပပီီးတစ်ချပ် စိုစိုနပါင်ီးနှစ်ချပ်ကို ဆွဲယပ


ူ ါမယ်။ ပထမတစ်ကဒ်ကို ယူပပီီး

ခပေ်ထည်ပါမယ်။ ပထမတစ်ကဒ်က Club ခြစ်ပပီီး၊ ဒိုတယ တစ်ကဒ်က spade ခြစ်တဲ probability ကို

တွက်ပါ။

Let Event (A) = the first card is Club, Event (B) = the second card is spade

P(A) = 13/52

54 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

P(B) = 13/52 (ခပေ်ထည်မယ်နခပာတဲ တွက် ပထမဆွဲယူ ိုက် ိုဲ့ ဒိုတယတစ်ခိုမာှ

န ျာတာမျ ီး သက်နရာက်မှုမရှ ိုဲ့ independent formula ေဲဲ့ တွက်ပါမယ်။)

P(A∩B) = P (A) * P(B)

13 13 1 1 1
= ∗ = ∗ =
52 52 4 4 16

Mean (μ)

Mean ဆိုတာ ွယ်နခပာမယ် ဆိုရင်နတာ average ပါပဲ။ စိုစို နပါင်ီးကို တည်ပပီီး

နရ တွက်ေဲဲ့ စာီးတာနပါ။

μ = ΣX / N

ဉပမာ 10, 20, 30 တဲ့ရ


ို ဲဲ့ mean ကိုတွက်မယ်ဆိုရင်

ΣX = 10 + 20 + 30 = 60, N = 3

μ = 60/3 = 20

Medium

Medium ဆိုတာ ငယ်စဉ်ကကီီး ိုက် ကေ်ီးစဉ်တေ်ီးထဲက ယ်ကေ်ီးကို ရှာတာ ခြစ်ပါတယ်။

ကေ်ီး ိုီး နရ တွက်က မ ခြစ်တယ်ဆိုရင် ည်တည်တည်က ကေ်ီးသည် medium ခြစ်ပပီီး၊

ကေ်ီး ိုီး နရ တွက်က စို ခြစ်တယ်ဆိုရင်နတာ ည်တည်တည်က နှစ် ိုီးကိုနပါင်ီးပပီီး 2 ခြင်

စာီးနပီးရမှာ ခြစ်ပါတယ်။

55 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

100, 100, 130, 140, 150, Medium = 130

100, 100, 120, 130, 140, 150, Medium = (120+130)/2 = 125

Standard deviation (σ)

Standard deviation (σ) ဆိုတာ ပျမ်ီးမျှနသွြယ်မှု၊ ကွာခခာီးမှုကို တွက်ချက်တာပါ။

standard deviation (σ) တေ်ြိုီးမျာီးန န ကေ်ီးစဉ်တေ်ီးဟာ range ကျယ်ခပေဲ့်န န

ကွာခခာီးချက် မျာီးန န ၊ standard deviation (σ) တေ်ြိုီးေည်ီးန န range ကျဉ်ီးန န ၊

ကွာခခာီးချက် ေည်ီးန န ိုဲ့နခပာ ိုဲ့ ရပါတယ်။

σ = √σ 2

(𝑥𝑖 − μ)2
𝑣𝑎𝑟𝑖𝑎𝑛𝑐𝑒 = σ2 = Σ
𝑁

ဒါန ကာင် standard deviation ကို တွက်ချင်ရင် variance ကို ရင်တက


ွ ်ရမှာ ခြစ်ပါတယ်။

1, 3, 5, 7

ΣX = 1 + 3 + 5 + 7= 16, N = 4

μ = 16/4 = 4

(𝑥𝑖 − μ)2
σ2 = Σ
𝑁

(1 − 4)2 + (3 − 4)2 + (5 − 4)2 + (7 − 4)2


σ2 =
4

56 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

(−3)2 + (−1)2 + (1)2 + (3)2


σ2 =
4

9+ 1+1+9 20
σ2 = = =5
4 4

σ = √5 = 2.2

1, 3, 9, 11

ΣX = 1 + 3 + 9 + 11= 24, N = 4

μ = 24/4 = 6

(𝑥𝑖 − μ)2
σ2 = Σ
𝑁

(1 − 6)2 + (3 − 6)2 + (9 − 6)2 + (11 − 6)2


σ2 =
4

(−5)2 + (−3)2 + (3)2 + (5)2


σ2 =
4

25 + 9 + 9 + 25 68
σ2 = = = 17
4 4

σ = √17 = 4.1

Range

Range ဆိုတာ ကေ်ီးစဉ်တေ်ီးထဲက ကကီီးဆိုီးကေ်ီးနှင် ငယ်ဆိုီးတဲ့ရ


ို ဲဲ့ ခခာီးေ ီးခခင်ီး

ခြစ်ပါတယ်။

1, 3, 4, 5, 5, 6, 7, 11, Range = 11 – 1 = 10

57 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

The Interquartile Range (IQR)

The interquartile range (IQR) is ဆိုတာ ကေ်ီးစဉ်တေ်ီးကို ညီ မျှ ပိုင်ီး ၄ ပင


ို ်ီး၊ ပိုင်ီးချင်တဲ

ခါမှာ သိုီးပါတယ်။ ကေ်ီးစဉ်တေ်ီးကို နှစ်ပင


ို ်ီးပင
ို ်ီးပါ၊ ပထမတစ်ပိုင်ီးက Q1 တွက်ရင် သိုီးမှာ ခြစ်ပပီီး၊

ဒိုတယ တစ်ပိုင်ီးက Q3 တွက်ရင် သိုီးမှာ ခြစ်ပါတယ်။

▪ Q1 စီထာီးတဲ ကေ်ီးစဉ်တေ်ီးရဲဲ့ ပထမတစ်ပိုင်ီးရဲဲ့ ယ်ကေ်ီးခြစ်ပါတယ်။

▪ Q2 ကနတာ medium ခြစ်ပါတယ်။

▪ Q3 စီထာီးတဲ ကေ်ီးစဉ်တေ်ီးရဲဲ့ ဒိုတယတစ်ပိုင်ီးရဲဲ့ ယ်ကေ်ီးခြစ်ပါတယ်။

1, 3, 5, 7, 9, 11, 13, 15

ပထမတစ်ဝက် = 1, 3, 5, 7 (စို ိုီး နရ တွက်)

Q1 = (3+5)/ 2 = 4

Q2 = (7+9)/2 = 8

ဒိုတယတစ်ဝက် = 9, 11, 13, 15 (စို ိုီး နရ တွက်)

Q3 = (11+13)/2 = 12

Q1 က 4 ရ ိုဲ့ ပထမ ပိုင်ီး => 1,3

Q1 က 4 , Q2 က 8 ရ ိုဲ့ ဒိုတယ ပိုင်ီး => 5,7

Q2 က 8, Q3 က 12 ရ ိုဲ့ တတယ ပင
ို ်ီး => 9,11 နှင် စတိုထထ ပင
ို ်ီး => 13,15 ဆိုပပီီး ညီ မျှ

4 ပင
ို ်ီး ပင
ို ်ီးနပီးသွာီးတာ ခြစ်ပါတယ်။

58 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

အ ောက်က ပုစ္ဆောအ ေးအ ွေ အ ေ့ကျငက်ေ့ ကညေ့ ပ


် ါ။

1. A = {2, 4, 6, 8, 10, 12, 14, 15, 16, 18, 20}, B ={0, 5, 10, 15, 20}. Find A U B, A ∩ B, A – B

and B-A.

2. P (a black face card) ကို တွက်ပါ။

3. P(Clubs or Hearts or Spade) ကို P(A)+P(À)=1 ဆိုတဲ ပန


ို သေည်ီး သိုီးပပီီးတွက်နပီးပါ။

4. န ကွနစ တစ်နစမှာ နခါင်ီးေဲဲ့ ပေ်ီးဆိုပပီီး နှစ်ြက်ရှပါတယ်။ နခါင်ီးကျနင


ို ်တဲ probability ေဲဲ့

ပေ်ီးကျနိုင်တဲ probability ကိုရှာပါ။

5. တေ်ီးထဲမှာ မေ်ီးကန ီး 10 နယာက်၊ နယာက်ျာီးန ီး 5 နယာက်ရှပါတယ်။

တေ်ီးနခါင်ီးနဆာင် ခြစ် မေ်ီးကန ီးထဲက တစ်နယာက်ေဲဲ့ နယာက်ျာီးန ီး တစ်နယာက်ကို

နရီးချယ်မှာခြစ်ပါတယ်။

a. န ီးန ီး တေ်ီးနခါင်ီးနဆာင် ခြစ်နင


ို ်တဲ probability

b. နမာင်နမာင် တေ်ီးနခါင်ီးနဆာင် ခြစ်နင


ို ်တဲ probability

c. န ီးန ီး သိုဲ့မဟိုတ် နမာင်နမာင် တေ်ီးနခါင်ီးနဆာင်ခြစ်နင


ို ်တဲ probability

d. န ီးန ီးနရာ၊ နမာင်နမာင်ပါ တေ်ီးနခါင်ီးနဆာင် ခြစ်နင


ို ်တဲ probability တဲ့ိုကို

ရှာနပီးပါ။

6. 52 ချပ်ထဲ က တစ်ချပ်ပပီီးတစ်ချပ် စိုစိုနပါင်ီးနှစ်ချပ်ကို ဆွဲယပ


ူ ါမယ်။ ပထမတစ်ကဒ်ကို ယူပပီီး

ခပေ်မထည်ပါဘူီး။ ပထမတစ်ကဒ်က Red Face ခြစ်ပပီီး၊ ဒိုတယ တစ်ကဒ်က Black Face ခြစ်တဲ

probability ကို တွက်ပါ။

7. 52 ချပ်ထဲ က တစ်ချပ်ပပီီးတစ်ချပ် စိုစိုနပါင်ီးနှစ်ချပ်ကို ဆွဲယပ


ူ ါမယ်။ ပထမတစ်ကဒ်ကို ယူပပီီး

ခပေ်ထည်ပါမယ်။ ပထမတစ်ကဒ်က Club ခြစ်ပပီီး၊ ဒိုတယ တစ်ကဒ်က Queen ခြစ်တဲ probability

ကို တွက်ပါ။

59 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

8. 37 ကနေ 123 ထ ကေ်ီးစဉ်တေ်ီးရဲဲ့ mean ကို ရှာနပီးပါ။ စိုစိုနပါင်ီးကိုတည်ပပီီးနတာ

နရ တွက်ေဲဲ့ စာီးမယ်ဆိုပပီီး စိုစိုနပါင်ီး ထိုင်နပါင်ီးမနေပါေဲ၊ဲ့ ထိုင်ပပီီး ဘယ်နှစ် ိုီး ဲ နရတွက်

မနေပါေဲန
ဲ့ ေ ်။ နရှဲ့သင်ခေ်ီးစာက summation Formula နတွကို သိုီးချပါ။

9. 1, 3, 5, 7, 9, 11, 13, 15 ရဲဲ့ Medium ကိုရှာနပီးပါ။

10. 2, 4, 6, 8, 10, 12, 14, 16, 18, 10 ရဲဲ့ Medium နှင် Standard deviation ကို ရှာနပီးပါ။

11. 1, 5, 30, 45, 60, 770, 888, 990 ကေ်ီးစဉ်တေ်ီးရဲဲ့ Range ကိုရှာပါ။ ပပီီး ျှင် IQR ကိုသိုီးပပီီး 4

ပင
ို ်ီးပိုင်ီးနပီးပါ။

Chapter အနှစခ ျု

ဆရာဝေ်တစ်နယာက် ဟာ ူေ နတွကို နဆီးကိုတမှ


ဲ တ်တမ်ီးနတွကို သမ်ီးဆည်ီး

ထာီးန ရှတယ်။ ူေ နတွ ရမ်ီးမျာီးတဲ တွက် ချက် က်နတွက ည်ီး မျာီးမှာ မှေပ
် ါပဲ။

ဲဒါနတွကို ာခပရင် ကျွေ်မတိုဲ့ ို သာမာေ် ူ(နဆီးဝေ်ထမ်ီး မဟိုတတ


် သူ
ဲ နတွ) က

ေ ီးမ ည်ပါဘူီး။ နဆီးဝေ်ထမ်ီးနတွနတာင် တစ်ခိုချင်ီးေ ီး ည်မာှ ခြစ်နသာ် ည်ီး data မျာီးရင်

ကည်ရတာ မူီးပပီီး၊ နကာက်ချက်ဆွဲြဲ့ို ခက်ခဲမာှ နသ ချာပါပဲ၊ ဲဒီ ို မျာီးခပာီး ှတဲ ေ ီး ည်ြိုဲ့

ခက်ခဲတဲ ကမ်ီး ချက် က်နတွကို data ိုဲ့နခေါ်ပါတယ်။ ဲဒီ ချက် က်နတွနပေါ်မှာ

တွက်ချက်မတ
ှု စ်ခိုခို ိုပ်ပပီီး ဘာနရာဂါ ကခဏာနတွ ရှရင် ဘာနရာဂါ ိုဲ့ ထိုတ်ခပရင်နတာ ကျွေ်မတဲ့ို

ေ ီး ည်ပါတယ်။ ဲဒီ ို မျာီးေ ီး ည် ွယ်တဲ သိုီးဝင်တဲ ချက် က်နတွကို information

ိုဲ့နခေါ်ပါတယ်။

60 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

ခပေ်နခပာရရင် ေ ီး ည်ြိုဲ့ရာ မ ွယ်ကူတဲ မျာီးခပာီး ှတဲ ကမ်ီး ချက် က်နတွကို

data နခေါ်ပပီီး၊ ဲဒီ data နပေါ်မှာ တွက်ချက်မှု ိုပ်ပပီီး မျာီးေ ီး ည်တဲ သိုီးဝင်တဲ ပစ
ို ေဲဲ့

ထိုတ်ခပနပီးတာကို information ိုဲ့နခေါ်ပါတယ်။

နကျာင်ီးနတွမှာ ကန ီးနတွကို နေ က် တေ်ီးကိုတက်ြိုဲ့ ယခို က်ရှ တေ်ီး တွက်

စာနမီးပွဲ နခြရပါတယ်။ ဲဒီစာနမီးပွမ


ဲ ှာ ိုန ာက်နသာ မှတ်ကိုရမှသာ နေ က် တေ်ီးကို

တက်ခွင်ရမှာ ခြစ်ပါတယ်။ ိုန ာက်နသာ မှတ်ဆိုတာ၊ ိုန ာက်နသာ မှေက


် ေ်မ(ှု accuracy)

ပဲခြစ်ပါတယ်။ ထို တူပဲ ထွက် ာတဲ information ကို တေ်ီးပပီီး နပီးသိုီး ိုဲ့မရပါဘူီး၊ ဲဒီ

information ဟာ ဘယ်န ာက်မေ


ှ ်ကေ်မရ
ှု ှသ ဲဆိုတဲ accuracy ကို တွက်ချက်ပပီီး accuracy

နကာင်ီးမှ information ဟာ စတ်ချစွာ သိုီးခပ ိုဲ့ ရမှာ ခြစ်ပါတယ်။

Statistics ဟာ data နတွကနေ information ဆွဲထိုတြ


် ဲ့ို တွက်ချက်တဲ နေရာနတွ နှင်

ဆွဲထိုတ် ိုက်တဲ information ဟာ ဘယ်န ာက် မှေက


် ေ်မရ
ှု ှသ ဲဆိုတဲ accuracy

တွက်ချက်တနေရာနတွ
ဲ မာှ ွေ် သိုီးခပ ပါတယ်။

နေ က်ပပီီး programmer တစ်နယာက် နေေဲဲ့ သခ်ျာတဲ့၊ို statistic တဲ့ဆ


ို တ
ို ာ မသမခြစ်

ို ပ်ချက်နတွ ခြစ်ပါတယ်။ ဒါန ကာင် note စာ ိုပန


် ီး တစ် ိုပ်ထာီးပပီီး ိုက်မတ
ှ ်ပါ။ ချတွက်ပါ။

ြတ်ရိုေန
ဲဲ့ တာ န ာ် င်ီး ဆိုပပီီး ပပီီးသွာီးမှာပါ။ ဘာမှ မှတ်မမှာ မဟိုတပ
် ါဘူီး။

61 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

အခန်း (၅)

Data Structure မိတဆက

Data Structure ဆတ
ို ာဘာလဲ။

လူတ ွေ စ်တ ောက်နဲ့ စ်တ ောက် တ ောဆိုဆက်ဆံ ဲ့အခါမော ြစ် ြစ်၊ စောတ ေးသောေးပ ေး

ဆက်သွေ ် ဲ့အခါမော ြစ် ြစ် မန်မောလူမ ေးအခ င်ေးခ င်ေးက မန်မောလို တ ေးသောေးတ ောဆိုဆက်ဆံမ ်။

ထိုင်ေးလူမ ေးအခ င်ေးခ င်ေးက ထိုင်ေးလို တ ေးသောေးတ ောဆို ဆက်ဆံမ ်။ အဒလို အခ င်ေးခ င်ေး

တ ောဆိုဆက်ဆံ ဲ့ မန်မောလို ထိုင်ေးလို စ ောတ ွေကို language(ဘောသောစကောေး) လိုဲ့တခေါ် ါ ်။

ဒီလိိုပါပဲ program(software/code) တတွေကိိုတ ်းသ ်းတဲဲ့ programmer တတွေ အသို်းပပြုတဲဲ့ language

ကိို programming language လိိုို့တခေါ်ပါတယ။ လူတ ွေတ ောဆိုဆက်ဆံ ဲ့အခါမောသံိုေး ဲ့ language

မော မန်မော၊ ထိုင်ေး စသည် ြငဲ့် မ ောေးစွေော သလို programming language တ ွေလမ ောေးစွေော ါ ်။

ဥ မောအတနနဲ့ တ ော င် Python, Java, PHP, C#.net ဲ့တ


ို ါ ဲ့။

Data Structure ဆို ောကတ ောဲ့ programming language မဟို ် ါ။ Programming

Language တ ွေကိုသံိုေးပ ေး program တ ွေတ ေး အ


ဲ့ ခါမော

1. Dataတ ွေကို ဘ ်လို ိုံစံတ ွေ စိုဆည်ေး သမ်ေးဆည်ေး လိုဲ့ သလ၊ အဒထကမ

ဘ ်လိုအတ ခအတနမော ဘ ်လို ိုစ


ံ ံနဲ့ သမ်ေးဆည်ေး င်တကောင်ေးမလ၊

2. အဒ data တ ွေကတန ကို ်လိုခ င် ဲ့အတ ြကို ြိုဲ့ ဘ ်လို algorithm တ ွေနဲ့ အလို ်လို ်လိုဲ့

( ွေက်ခ က်လို)ဲ့ မလ

စ ဲ့ အခ က် ၂ ခ က်ကို အဓက သတအောင် တလဲ့လော ောကို data structure လိုဲ့ တခေါ် ါ ်။

62 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

၁. Data သိမဆည်းပို ကိို တလဲ့လ ပခင်း

Data တ ွေကို သမ်ေး ဲ့အခါ လိုအ ်ခ က်အ န်ြိုေး စ်ခိုထသမ်ေးခ င် ောမ ေး သလို၊

န်ြိုေးတ အ
ွေ လ
ွေ ိုက်သမ်ေးခ င် ောမ ေးလည်ေး ါ ်။

ဥ မော လူ စ်တ ောက် ဲ့ လက် အသက်အ ွ ်ကိုသမ်ေးခ င် ်ဆို င် လူ စ်တ ောက်မော

လက် အသက် ွ ဆ
် ို ော စ်ခို ည်ေး ါ ်။ ဒလို စ်ခိုထ ဲ့ န်ြေးို ကို သမ်ေးခ င် ်

ဆို င်တ ောဲ့ primitive data types တ ွေထက စ်ခို ကို အသံိုေး ါ ်။ Primitive data type ဆို ဲ့

တခါင်ေးစဥ်တအောက်မောလ int, flot စသည် ြငဲ့် အခွေတလေးတ ွေ အမ ောေးကကေး ါတသေး ်။

တမွေေးခ င်ေးတမောင်နမတ ွေကိုသမ်ေးခ င် ် ဆို င်တ ောဲ့ စ်ခ ဲ့က တမောင်နမ မ ဘူေး၊ စ်ခ ဲ့က

အမ ောေးကကေး ်၊ ဒတ ောဲ့ အောေးလံိုေးအဆင်တ တအောင် တမွေေးခ င်ေးတမောင်နမဆို င် န်ြိုေးအ လ


ွေ ိုက်

အမ ောေးကကေး သမ်ေး ဲ့ စ
ံို ံမ ေးနဲ့ သမ်ေး ါလမဲ့်မ ။် ဒလို အ လ
ွေ ိုက်အမ ောေးကကေး သမ်ေးခ င် င်တ ောဲ့ array,

stack, queue, lists စသည် ဲ့ထ


ို က စ်ခိုကို တ ေးွ ခ ် အသံိုေး လိုဲ့ ါ ်။ array, stack, queue,

lists ဲ့အ
ို င် အ လ
ွေ ိုက်သမ်ေးလိုဲ့ ဲ့ဟောတ ွေ တနောက်ထ ် အမ ောေးကကေး ါတသေး ်။

ဒါဆို င် primitive data types ဆို ော န်ြိုေး စ်ခို ည်ေးသမ်ေး တ


ဲ့ န ောမောသံိုေးပ ေး၊ array,

stack, queue, lists ဲ့က


ို တ ောဲ့ န်ြေးို အမ ောေးကကေးကို အ လ
ွေ ိုက်သမ်ေးခ င် ဲ့အခါမော

သံိုေး ်ဆို ောကို သတဘောတ ါက်တလောက် ါပ ။

Primitive data type ြစ် ြစ် array, stack, queue, lists ဲ့ို ြစ် ြစ် စ်ခိုခ င်ေးစမော

အောေးနည်ေးခ က်၊ အောေးသောခ က်တ ွေ ါ ်။ အောေးနည်ေးခ က်၊ အောေးသောခ က်တ ေါ်မူ ည်ပ ေး ဘ ်လို

အတ ခတန၊ ဘ ်လိုလိုအ ်ခ က်မ ေးမော ဘ ်ဟောကို အသံိုေး သငဲ့် ် စသည် ြငဲ့်

တလဲ့လော ော ြစ် ါ ်။ စ်ခိုခ င်ေးစ ဲ့ အောေးနည်ေးခ က် အောေးသောခ က်တ ွေကို သထောေး ခင်ေးအောေး ြငဲ့်

63 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

ကို တ
် ေးတန ဲ့ code ဲ့ လိုအ ်ခ က် အတ ခတနတ ေါ်မူ ည်ပ ေး သံိုေးစွေ သ
် ွေောေး င် code

တ ေး အ
ဲ့ ခါမော အ မ်ေးသက်သော လွေ ်ကူမော ြစ် ါ ်။

၂. Algorithm ဆိိုတ ဘ လဲ။

အလို ် စ်ခိုပ ေးတ မောက်ြိုဲ့ စ်ဆငဲ့်ပ ေး စ်ဆငဲ့်အလို ်လို ် ံို နည်ေးအောေး ြငဲ့် ဘောပ ေး င်

ဘောလို ် မလဆို ဲ့ လို ် မညဲ့်အဆငဲ့်ဆငဲ့် ကို Algorithm လိုဲ့တခေါ် ါ ်။

ဥပမ ထမင်းချကမယ ဆိိုတဲဲ့ algorithm ဆိို င

၁ -စောေးသံိုေးမညဲ့်သူအတ ွေက် နငဲ့် စ်ဦေးခ င်ေးစောေးသံိုေးနိုင် ဲ့ မောဏတ ေါ်မူ ည်ပ ေး ခ က် မညဲ့်

ဆန် မောဏ ွေက်ခ က် ါ။

၂- ွေက်ခ က်ထောေးတသော မောဏအ င


ို ်ေး ဆန်ကို ူ ါ

၃- ူလောတသောဆန်ကို တ ြငဲ့် နစ်ထ ်သံိုေးထ ် တဆေး ါ

၄-မတ ောဲ့၊ မမော အတနတ ော် ထမင်ေး တအောင် တဆေးပ ေးသောေးဆန်နငဲ့် သငဲ့်တ ော် ဲ့တ မောဏကို

ထမင်ေးတ ါင်ေးအိုေးထထညဲ့် ါ။ (တ မ ောေးလွေန်ေးလျှင်တ ောဲ့မည်၊ တ ေးနည်ေးသွေောေးလျှင်မောမည်။)

64 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

၅ - ထမင်ေးတ ါင်ေးအိုေးအြံေးို ကို ်ပ ေး မေးကက ေးကို လ ်တ ါက်မော ် ါ။

၆ - မေးခလို ြ
် ွေငဲ့် ါ။

၇- က က်လိုဲ့ ထမင်ေးတ ါင်ေးအိုေးက အခ က် င် လ ်တ ါက် ြ ် ါ၊ မေးခလို ် ် ါ။

၈- ထမင်ေး သံိုေးတဆောင်လိုဲ့ ါပ

ဒါဆို င် တ ါင်ေးအိုေးနဲ့ထမင်ေးခ က်နည်ေး အဆငဲ့်ဆငဲ့် ထောေး ောမဲ့ို တ ါင်ေးအိုေးနဲ့ ထမင်ေးခ က် ဲ့

algorithm လိုဲ့ တ ောလိုဲ့ ါ ်။ (ထမင်ေးခ က် ော မ မင်ြေးူ လိုဲ့ သခ င် င် youtube မော video

ောကကညဲ့်ကကညဲ့် ါ)

ဒမော စ်ခိုထ ်တ ောခ င် ောက algorithm ဆိတ


ို က step by step procedure

(အလိုပလိုပပို တစဆငဲ့ချင်း ကိိုတ ေါ်ပပပခင်း) လိုဲ့တ ော ါ ်။ စ်ဆငဲ့်ခ င်ေး အစစဥ်လိုက်

လို ် ါ ်။ တက ော်ခ လိုဲ့ မ ါဘူေး။

တက ောင်ေး က် န
ို ်ေးက သူင ်ခ င်ေးနစ်တ ောက်နဲ့ အတဆောင်မော အ ူတန ါ ်။ စ် က်မော

သ ပ် ေးတနမတကောင်ေး ောနဲ့ တစောတစောအ မ


် ဆ
် ိုပ ေး သံိုေးတ ောက်စော ဆန်တဆေး၊ တ ါင်ေးအိုေးထကို

အဆင်သငဲ့် ထညဲ့်တ ေးခဲ့ ်။ ပ ေးတ ောဲ့ တနောက်က မ ခ က်တလ မနက် ူ ူစောေး တလမိုဲ့ သူင ်ခ င်ေးကို

“ဆန်တဆေးပ ေး တ ါင်ေးအိုေးထ အဆင်သငဲ့်ထညဲ့ခ


် ဲ့ ်။ နင်အ တ
် ောဲ့မ ဆ
် ိုမ လ ်တ ါက်

ထိုေးလိုက်တနော်” လိုဲ့မောခဲ့ ါ ်။

မနက်ထမင်ေးစောေးမ လ
် ို ်တ ောဲ့ တ ါင်ေးအိုေးထမော ထမင်ေးအစောေး မခ က် တသေး ဲ့ ဆန်

အတစဲ့လိုကတ
် ွေ တ ွေဲ့ ါ ်။ အဒတ ောဲ့မ သူင ်ခ င်ေးက “ လ ်တ ါက်တ ောဲ့ထိုေး ် မေးခလို ်

ြွေငဲ့်ြိုဲ့ တမဲ့တန ောဟ” ဲ့တလ။ က မေးခလို ်ြွေငဲ့်ဆို ဲ့ အဆင်ဲ့ စ်ဆငဲ့် တမဲ့က န်ခဲ့ ောနဲ့

စောေးလိုဲ့ ထ
ဲ့ မင်ေးဆို ဲ့ လိုခ င် ဲ့ result မ တ ောဲ့ ါဘူေး။

65 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

ဒါတ က ငဲ့ မှတထ ်း မှ က algorithm ဆိိုတ က step by step procedure လိိုို့တပပ ပါတယ။

တစဆငဲ့ချင်း အစီစဥလိိုက လိုပ ပါတယ။ တကျ ချလိိုို့မ ပါဘ်း။

ဒမော input, output ဆို ောကို နည်ေးနည်ေး င်ေးခ င် ါတသေး ်။

Input - ဆို ော လိုအ ်ခ က်လိုဲ့ တ ောလိုဲ့ မ ထ


် င် ါ ်၊

Output - ဆို ော လိုခ င် ဲ့ result ါ။

ဒ algorithm မော ဆို င် စောသံိုေးမညဲ့်လူအတ ွေက်၊ စ်တ ောက်ခ င်ေးစောေးနိုင် ဲ့ မောဏ

ဒနစ်ခိုဟော သြလ
ိုဲ့ ို ဲ့ လိုအ ်ခ က် ြစ်ပ ေး၊ ဆန်၊ တ ၊ ထမင်ေးတ ါင်ေးအိုေး၊ လျှ ်စစ်မေး ကတ ောဲ့

ြလ
ိုဲ့ ို လ
ဲ့ ိုအ ်ခ က် ြစ် ါ ်။ ြိုဲ့ လို ဲ့ လိုအ ်ခ က် တနမ အဒ algorithm ကို သံိုေးသငဲ့် ါ ်။

ဥ မော လျှ ်စစ်မေး မ တသေး ဲ့ တန ောမ ေးမော တ ါင်ေးအိုေးနဲ့ ထမင်ေးခ က်ြဆ


ိုဲ့ ို ော မ ြစ်နင
ို ် ါဘူေး။

သြလ
ိုဲ့ ို ဲ့ လိုအ ်ခ က်ကိုတ ောဲ့ input လိုဲ့တခေါ် ါ ်။ စောေးလိုဲ့ တသော ထမင်ေး ဆို ောကတ ောဲ့

လိုခ င် ဲ့ result မဲ့ို output လိုဲ့တခေါ် ါ ်။

မီ်းတသွေ်းနဲို့ ထမင်းချကနည်း algorithm တ ်းပါဆိို င

၁ - မေးတမေးထောေး ါ

၂ - စောေးမညဲ့်လူအတ ွေက်နငဲ့် စ်တ ောက်ခ င်ေးစောေးသံိုေးနိုင် ဲ့ မောဏတ ေါ်မူ ည်ပ ေး

ခ က် မညဲ့် မောဏကို ွေက်ခ က် ါ။

၃- ွေက်ခ က်ထောေးတသော မောဏအ င


ို ်ေး ဆန်ကို ူ ါ

၄- ူလောတသောဆန်ကို တ ြငဲ့် နစ်ထ ်သံိုေးထ ် တဆေး ါ

၅ - ခ က်မညဲ့အ
် ိုေးထသိုဲ့ တဆေးပ ေးသောေးဆန်ထညဲ့် ါ၊ မေးြတ
ို ေါ်အိုေးကို င်ထောေးလိုက် ါ။

66 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

(တ ခမ်ေးခ က်မော မဟို ် ဆန်တစဲ့တ ွေ မတ ောဲ့မမော အတနအထောေးတ ောက် င် ထမင်ေးတ တ ွေ

ငဲ့ စ်မောမဲ့ို တ ကိုအ မ်ေးကကေး ွေက်ခ က်ထညဲ့်တနစ ောမလို ါဘူေး၊ ကက က်သတလောက် ထညဲ့်လိုဲ့

ါ )်

၆ - တ မ ောေး ွေက် ွေက်ဆူလောပ ဆို င် အထက ဆန်အတစဲ့တလေးကို ူပ ေး လက်နဲ့ြြကကညဲ့် ါ၊

မောတသေး ်ထင် ါကဆက် ည်ထောေး ါ, မတ ောဲ့မမော မမ ကက က် ဲ့ အတနထောေး တ ောက် ါက

တ မ ောေး ကိုန်တအောင်ငဲ့ ါ(သွေန် ါ)။

၇ - ငဲ့ ောတ မက န်တ ောဲ့ င် မေးြတ


ို ေါ် ွေင် ထမင်ေးအိုေးကို တစောင်ေးတလေး င်ပ ေး စ် ်

ညဲ့်တအောင် လညဲ့်လညဲ့်ပ ေး အ ူတ ေး ါ။

၈- ထမင်ေး သံိုေးတဆောင်လိုဲ့ ါပ

ဒ algorithm မော ဆို င် စောသံိုေးမညဲ့်လူအတ ွေက်၊ စ်တ ောက်ခ င်ေးစောေးနိုင် ဲ့ မောဏ

ဒနစ်ခိုဟော သြလ
ိုဲ့ ို ဲ့ လိုအ ်ခ က် ြစ်ပ ေး ထမင်ေးခ က်ြဲ့ိုအိုေး၊ မေးတမေးြဲ့ို ထင်ေး သမ
ိုဲ့ ဟို ် မေးတသွေေး ကတ ောဲ့

ြလ
ိုဲ့ ို လ
ဲ့ ိုအ ်ခ က် ြစ် ါ ်။ ဒါတကကောငဲ့် အဒ ြိုဲ့လို ဲ့ လိုအ ်ခ က်တ ွေမ င် ဒ algorithm ကို

သံိုေးြဲ့ို မစဉ်ေးစောေးသငဲ့် ါဘူေး။ သြလ


ိုဲ့ ို ဲ့ လိုအ ်ခ က် ြစ် ဲ့ စောသံိုေးမညဲ့်လူအတ ွေက်၊ စ်တ ောက်ခ င်ေး

စောေးနိုင် ဲ့ မောဏတ ွေကတ ောဲ့ input ြစ်ပ ေး စောေးလိုဲ့ တသော ထမင်ေး ဆို ောကတ ောဲ့ လိုခ င် ဲ့ result

မဲ့ို output ြစ် ါ ်။

67 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

ဒီ algorithm နှစခိုမှ ပထမတစခိုက

▪ လူသက်သော ်။

▪ ဒါတ မဲ့ တ မောဏကိုတကောင်ေးတကောင်ေးထညဲ့် ်မ အဆင်တ မ ်၊ မဟို ် င် တ ောဲ့ ော

မော ော ြစ်နင
ို ် ်။

▪ ထမင်ေးတ မငဲ့ အ
ဲ့ ွေက် တ ခန်ေးခ က် ော ြစ် အ
ဲ့ ွေက် စောသံိုေးမညဲ့်ထမင်ေးထမော အဟော

ညဲ့်ဝ စွေော ်။

▪ ဆန်နဲ့ သ မ
် ညဲ့်တသော ဆေးခ သမောေးတ ွေ အ ွေက်တ ောဲ့ တ ါင်ေးအိုေးနဲ့ခ က် ောဟော

တ ခန်ေးခ က် ောမိုဲ့ ဆန် ဲ့ အဟော ညဲ့်ဝစွေော ါတနလိုဲ့ မသငဲ့်တ ော် ါဘူေး။

▪ လျှ ်စစ်မေးနဲ့ တ ါင်ေးအိုေး မ ဒနည်ေးနဲ့ခ က်လိုဲ့ ါမ ်။

ဒိုတယ
ိ တစခိုက

▪ လူ င် န်ေး ်၊ ဆန်က ငဲ့လိုဲ့ ဲ့ အတနအထောေးတ ောက်လောေး မောတသေးသလောေး ဆို ော ကကညဲ့်ြဲ့ို

အခ န်တ ေးြဲ့လ
ို ို ါ ။်

▪ ငဲ့ စ်မောမဲ့ို တ မ ောေးလည်ေး သ ် ဿနောမ ဘူေး၊ ဒါတကကောငဲ့် တ မောဏကို အဆင်တ သလို

ထညဲ့်လိုဲ့ ါ ်။

▪ လျှ ်စစ်မေး ြမ
ိုဲ့ လိုဘူေး။

▪ ထမင်ေးတ ငဲ့ စ် ောတကကောငဲ့် အဟော တလ ောဲ့သွေောေးလိုဲ့ ဆန်နဲ့သ မ


် ညဲ့် ဲ့ ဆေးခ သမောေးတ ွေ

အ ွေက် သငဲ့်တ ော် ါ ်။

▪ ငထ
ဲ့ ောေးတသောတ (ထမင်ေးတ ) ကို ဆောေးတလေး သကကောေးတလေးထညဲ့်ပ ေး သေးသနဲ့် တသောက်လိုဲ့ ်။

▪ ငထ
ဲ့ ောေး ဲ့ ထမင်ေးတ ကို ဟင်ေးခ ခ က် ဲ့တန ောမောလည်ေး သံိုေးလိုဲ့ ်။

68 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

အထူေးတ ောခ င် ော စ်ခိုကတ ောဲ့ ဒို algorithm မော မေးတမေး ောကို ဆန်ကတ
ို ဆေး

ခ က်မညဲ့အ
် ိုေးထထညဲ့်ပ ေးမ လို ်လိုဲ့ တ မဲ့ ဆန် မောဏ မ ွေက် တသေးခင် က ည်ေးက

ကက င်ပ ေး မေးတမေးထောေးမ ်ဆို ောဟော algorithm တ ေးသောေးသူ ဲ့ ကျွမ်ေးက င်မူ ြစ် ်။

မေးဆို ော တမေးတမေးခ င်ေး မ က်ဘူေး(မေးအောေးမတကောင်ေးဘူေး)၊ မေး က်လောတအောင်

မေးအောေးတကောင်ေးလောတအောင် အခ န် ူြလ
ိုဲ့ ို ်။ မန် မန် က်ခ င် င်တ ောဲ့ က်ခ ်တ ေးြဲ့လ
ို ို ါ ်။

ဒတ ောဲ့ မေးကိုအ င်တမေးထောေးပ ေးတ ောဲ့မ ခ က် မညဲ့် ဆန် မောဏ ွေက်မ ၊် ဆန် ူမ ်၊

ဆန်တဆေးမ ၊် ဆန်တဆေးပ ေး ခ က်မညဲ့်အိုေးထထညဲ့်မ ် စ ဲ့အလို တ


် ွေက ူ ဲ့ကကောခ န်တ ွေဟော

မေးအ က် အကိုက် ြစ် ောမဲ့ို မေးအ က် တစောငဲ့်စ ောမလိုလိုဲ့ အခ န်ကိုန်သက်သော ်၊

မေးအ မန် က်ြဲ့ို က်ထိုင်ခ ်တနစ ောလည်ေး မလိုတ ောဲ့ ါဘူေး။

ထမင်းချကနည်းအမျိြု်းမျိြု်း သ
ှိ လိို၊ သခ္ျ ပိုစဆ တစပိုဒမှ တွေကနည်းအမျိြုမျိြု်း ှိသလိို၊ ကိစစ

တစခို အတွေကလည်း တပ ှင်းနည်း algorithm တတွေအမျ ်းကကီ်း ိပ


ှ ါတယ။ အဒလိုမ ေး တ ြ င်ေးနည်ေး

ွေက်ခ က်နည်ေး algorithm တ ွေတလဲ့လော အ


ဲ့ ခါမော အောေးနည်ေးခ က်၊ အောေးသောခ က်၊ ကကောခ န်၊

လိုအ ်ခ က် စ ောတ ွေအောေးလံိုေးကို သတအောင်တလဲ့လော ါမ ်။ ကကောခ န်သမ မန် ဲ့ algorithm

ကိုတ ွေးခ ်လိုဲ့ မောတ ါ ဲ့။ လိုအ ်ခ က်သမ ကို န


် ဲ့ကိုက်မကိုက်ဆံိုေး ြ ်လိုဲ့ မောတ ါ ဲ့။ ဥ မော တ ါင်ေးအိုေးနဲ့

ထမင်ေးခ က်ြဆ
ိုဲ့ ို လျှ ်စစ်မေးလိုအ ် ်။ ဒတ ောဲ့ လျှ ်စစ်မေးမ တသေး ဲ့ တဒသမော အဒ ခ က်နည်ေးကို

69 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

သံိုေးလိုဲ့မ ဘူေး။ ဒါတကကောငဲ့် အောေးသောခ က်၊ ကကောခ န်၊ လိုအ ်ခ က် စ ောတ ွေအောေးလံိုေးကို သမသောလျှင်

ကို ဲ့အ
် တ ခတနဲ့ ဘ ် algorithm ကိုသံိုေး မလ ဆို ော တကောင်ေးမွေနစ
် ွေော ဆံိုေး ြ ်နိုင်မော ြစ် ါ ်။

Chapter အနှစချြုပ

▪ Data Structure ဆို ော programming language မဟို ် ါ။

▪ programming language စ်ခိုခိုကိုသံိုေးပ ေး program တ ေးသောေး အ


ဲ့ ခါ data တ ွေကို

ဘ ်လို ိုစ
ံ ံနသ
ဲ့ မ်ေး င်တကောင်ေးမလ၊ အဒ data တ ွေကို ွေက်ခ က် ဲ့အခါမော ဘ ် algorithm

နဲ့ ွေက်သင်ဲ့သလဆို ော သြိုဲ့ data သမ်ေးဆည်ေးနည်ေးတ ွေနဲ့ data တ ွေကို ွေက်ခ က်နည်ေး

အဆငဲ့်ဆငဲ့် step by step procedure လိုဲ့တခေါ် ဲ့ algorithm ကို တလဲ့လော ောကို Data

structure လိုဲ့ တခေါ် ါ ်။ ဒတလောက်ဆို င် data structure ဆို ော ဘောလ သတလောက်ပ လဲ့ို

ထင် ါ ်။

▪ တနောက်ပ ေး algorithm ဲ့ ြလ
ိုဲ့ ိုအ ်ခ က်တ ွေ ကို ဲ့်မော တနမ သံိုေးလိုဲ့ မ ်။ သြဲ့လ
ို ို ဲ့

လိုအ ်ခ က် အောေးလံိုေးကို input လိုဲ့တခေါ်ပ ေး၊ လိုခ င် ဲ့ အတ ြ result ကိုတ ောဲ့ output၊

လို ်နည်ေး၊ ွေက်ခ က်နည်ေး ကိုတ ောဲ့ process လိုဲ့တခေါ် ါ ်။ ဒါတကကောငဲ့် algorithm စ်ခိုမော

1. input ၊

2. Process

3. output ဆိုပ ေး အ င
ို ်ေး ၃ ိုင်ေး ါ ါ ဲ့မ ်။

70 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

“တက ောင်ေး က် ိုန်ေးက ဆ ောမက စောသင်သောွေ ေး ်၊

စောကတ ောဲ့ ကကော င်တမဲ့၊

တ ေးသွေောေး ဲ့ ဥ မောတ ွေကတ ောဲ့ အကိုန်မ ်မ ်။

အခိုလည်ေး Data structure တ ောဲ့ မသလိုကဘ


် ူေး၊

ထမင်ေးတ ောဲ့ မ ေးစံိုခ က် သ


် ွေောေးပ လမ
ိုဲ့ ောေး ြစ်တနကကပ လောေးမသဘူေး”

71 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

အခန်း (၆)

Algorithm မိတဆက

Variables

Algorithm အက ကြောင်းကို မက ြောက ်းခင Variable ကို အရင က ြော ါ့မယ။ Variable ဆိိုတာ

memory ပ ေါ်မာ သိမ်းဖိိုို့ ပနရာပ ်း တစပနရာယူတာကိို variable ိိုို့ ပခေါ် ါတယ။

ဥ မြော ၂ နဲ့ ၅ နဲ့ က င်း လိုဲ့ က ြောရင ကျွနမတိုဲ့ လူကက်းကတွေကကတြောါ့ ၇ ဆိုတါ့ အက ြေ

တန်းက ်းမြောက ါ့။ ဒ က မါ့ အဒကလြောက မန မန မတွေကတတက ်းတါ့ ကကလ်းကလ်းကတွေ ခ္ခြော

တွေကတြောကို စဉ်းစြော ကညါ့ရကအြောင ။

“၂ ကို စတထမြောမတ”၊ “ လက ၅ ကခခြောင်းကထြောင”၊

“၂ ပ ်း ကတြောါ့ ၃၊ ၃ ပ ်းကတြောါ့ ၄၊ ၄ ပ ်းကတြောါ့ ၅၊ ၅ ပ ်းကတြောါ့ ၆၊ ၆ ပ ်းကတြောါ့ ၇” ဆိုပ ်း

လကကကလ်းကတွေ ခခ ်းခခ ်း ပ ်း တွေက ွေြော်းတြော ကမြောက ါ့။

အဒမြော ၂ ကို စတထမြော မတ ဆိုတြော ၂ ကို စတထ မ်းလိုကတြော၊ လက ၅ ကခခြောင်းကထြောင

ဆိုတြော ၅ ကို လကမြော မ်းလိုကတြော၊ အဒကတြောါ့ မ်းြေဲ့ို ကနရြော ၂ ကနရြောလိုတြောက ါ့၊ computer

အကနနဲ့ က ြောမယ ဆိုရင variable 2 ခိုက ါ့။ တွေကလရ


ိုဲ့ လြောတါ့ အက ြေ ၇ ကို ထ ပ ်း မ်းရင စိုစိုက င်း

မ်းြေဲ့က
ို နရြော ကနရြော ၃ကနရြော လို ွေြော်းတြော ဆိုကတြောါ့ variable ၃ ခို လိုမြောက ါ့။ ဒ ဆို variable ဆိုတြော

ဘြောလ ကဘြောက ကကလြောက ပ ။

variable ကတွေကို ို်းကတြောါ့မယ ဆိုရင အမညက ်းရ တယ။ အမညကကတြောါ့

ကိုယကက ကတြောက ်းလိုဲ့ရ တယ။ ဒ က မါ့ programming language က တမတထြော်းတါ့ စည်းကမ်း

72 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

ကဘြောငအတွေင်းမြော ြေစရ မယ။ Language တစခိုနဲ့ တစခို variable name မြော ဘြောကတွေ လိုဲ့ရ လ

ဆိုတြော တမတထြော်းတြောကလ်းကတွေ နည်းနည်းကွေတြောမခ ်း ရ တယ။ အမခြော်းအြော်း ြေငါ့ တူည

ကတြောကကတြောါ့ variable name မြော

▪ Letter (a to z, A to Z), digit (0-9), underscore

▪ Don’t start with digit

ဆိုလိုတြောက variable name မြော a to z (အက ်း၊ အကက်း) ရယ၊ 0 to 9 ရယ၊ underscore

ရယ လရ
ိုဲ့ တယ။ အဲဒီ သူခွငဲ့ပ ြုထာ်းတဲဲ့ ၃ ခိုက ွဲပ ီ်း ကျနတဲဲ့ space ပခာ်းတာတိို့ို၊

ပ ါင်းနိုတပပမာကစာ်း၊ #, ! စတဲဲ့ special symbol တိိုို့ တစခိုမ ါ ို့ိိုမရ ါဘူ်း။ ပ ီ်းပတာဲ့ ါ ို့ိိုရတဲဲ့ ၃

ခိုထဲက digit နဲို့ စ ိိုို့ မရ ါဘူ်း။ letter သိိုို့မဟိုတ underscore (_) နဲို့ စပ ီ်းရငပတာဲ့ ပနောကက digit,

letter, underscore ိိုက ိိုို့ ရ ါတယ။

1num (မြော်း - 1 ဆိုတါ့ digit နဲ့စလိုဲ့)

num1 (မန n ဆိုတါ့ letter နဲ့စပ ်း၊ ကနောကကလည်း letter နဲ့ digit လိုဲ့)

Birth year (မြော်း space ခြော်းထြော်းလိုဲ့)

Birth_year (မန - letter နငါ့ underscore )

_year1 (မန - underscore နငါ့ စပ ်း၊ ကနောကက letter နဲ့ digit လိုက)

Algorithm ဆိိုတာ

Algorithm ဆိုတြော step by step procedure ြေစတယ။ ပ ်းကတြောါ့ ခ္ခြောတစ ိုဒမြော

တွေကနည်းက င်းမခြော်းစွေြောရ လိုဲ့ တစစိုတစခိုကို က ြေရင်းတွေကခခကြေိုဲ့ အတွေကလည်း algorithm ကတွေ

73 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

မခြော်းစွေြောရတယ။ အဒ algorithm ကတွေထကမ အရငဆို်းကတြောါ့ ကိုယမ


ါ့ ြော ရတြောကတွေနဲ့ ကိုကညတါ့

အ ို်း လိုဲ့ရတါ့ algorithm ကတွေကို အရငစစထိုတရ မယ။ အဒစစထိုတထြော်းတါ့ အထကမ

အြော်း ြောခခက၊ အြော်းနည်းခခကကို ကလါ့လြောပ ်း မမ အဆငက တြောကို ကရ်းခခယရ မယ။ ဒါပ ကာငဲ့

algorithm တစခိုကိို ပ ဲ့ ာတဲဲ့ အခါမာ ဘယ ိို အပပခအပနမာ သို်းနိိုငသ ဲ၊ အာ်းသာချကက

ဘာ ဲ အာ်းနည်းချကက ဘာ ဲဆိိုတာ ပ ဲ့ ာဖိို့ို ိို ါတယ။ စ ညါ့ အက ကြောင်းအရြောကတွေကို ကရှေ့မြော

က ြောခါ့ ပ ်း ွေြော်း ပ ။

ပနောကပ ီ်း algorithm တစခိုမာ input, process, output ဆိိုပ ီ်း ၃ င


ိို ်း ါမညဲ့ အပ ကာင်း ဲ

ပပ ာခဲဲ့ပ ီ်း ါပ ီ။

▪ Input - ဆိုတြောက ြေလ


ိုဲ့ ိုတါ့ လိုအ ခခက၊ တနည်းအြော်း ြေငါ့ အ ို်း ူက ထညါ့ ွေင်း

က ်းရမညါ့ ဝငလြောမညါ့ အခခကအလက၊

▪ Process - ဆိုတြောက တွေကခခကတြော၊

▪ Output - ဆိုတြောကကတြောါ့ အက ြေ ထိုတ တြော ြေစ တယ။

Input Processing Output

လူတစကယြောကက ကျွနကတြောါ့အ က ဘယနနစ ရပ လ တွေကက ်း လိုဲ့ က ြောတယ

ဆို ကတြောါ့။ ဒ ဆို ကျွနမတဲ့ို ူကို ဘြော နကမ်း ကမလ။ အ ကမ်းြေခင်းတွေကမယဆိုရင ကမွေ်းတါ့

ခိုနစကလြောကကတြောါ့ ကမ်းရမြောက ါ့။ ဒီပတာဲ့ ပမွ်းတဲဲ့ ခိုနစဆိိုတာ အသို်းပ ြုမညဲ့သူက ပပ ာရမာ

ပဖစတဲဲ့အတွက input ပဖစ ါတယ။ ပ ်းကတြော ဘယလိုတွေကမလ။ ယခို လကရ ခိုနစထကကန ကမွေ်းတါ့

ခိုနစကို နှုတပ ်း တွေကမြောက ါ့။ ဒ ဟြော တွေကခခကတြော ြေစလိုဲ့ process ။ နှုတ ိိုို့ရ ာတဲဲ့

74 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

(တွက ိိုို့ရ ာတဲ)ဲ့ အပပဖကိို user ဆီ ပ နပပ ာတာက output ါ။ ဒ ဆို input, output, process ကို

ကဘြောက ကကလြောက ပ ။

ပ ်းကတြောါ့ ဒမြော input လကခမြောက တစခို - ကမွေ်းတါ့ခိုနစ၊ output ထိုတက ်းရမြောက တစခို -

အ က ဆိုကတြောါ့ input တစခို၊ output တစခို၊ computer အကနနဲ့ က ြောရရင စိုစိုက င်း variable

နစခိုလို ါ့မယ။

အဒ variable နစခိုရှေ့ အမညကတွေကို စည်းကမ်းအတွေင်းက ကိုယကက ကတြော က ်းလိုဲ့ရ တယ။

ဒမြောကတြောါ့ birth_year နငါ့ age လိုဲ့ က ်းလိုက တယ။

Algorithm : Age Calculation

1. Write ‘Enter your birth year’

2. Read birth_year.

3. Set age = 2021 – birth_year.

4. Write ‘Your age is’, age

5. Exit.

1. အရငဆို်း user ကို အ ကရိုကထညါ့ ဆိုပ ်း Enter your age လိုဲ့ user ကို က ြောခခငတြော၊ User

မငကအြောင ထိုတ ခခငတြော ြေစလိုဲ့ write ဆိုပ ်း output ထိုတ လိုက တယ။

2. အဒမြော user က ူူ့ကမွေ်းတါ့ခိုနစကို ရိုကထညါ့လိုကတြောနဲ့ Read လို ပ ်း ရိုကထညါ့တါ့ တနြေို်းကို

birth_year ဆိုတါ့ variable ထ မ်းလိုက တယ။ (input)

3. ယခို ခိုနစက 2021 ြေစလိုဲ့ 2021 ထက user ရိုကထညါ့လိုကတါ့ တနြေို်း birth_year ကို နိုတပ ်း

တွေကခခကလိုက တယ။ တွေကခခကတြောဟြော process ြေစပ ်း ရလြောတါ့ အက ြေကို age ဆိုတါ့

variable ထ မ်းလိုက တယ။

75 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

4. တွေကလရ
ိုဲ့ လြောတါ့ အက ြေကို ကို စ
ို တစခိုနဲ့ ထိုတ ခခင တယ၊ ဥ မြော တွေကလရ
ိုဲ့ လြောတါ့ တနြေို်းက

20 ဆိုရင Your age is 20 လိုဲ့က ေါ်ခခင တယ။ output ထိုတ မြောမဲ့ို Write, Your age is ဆိုတါ့

စြော ြော်း တက
ို ရိုကက ေါ်ခခငတြော ြေစလိုဲ့ single quote အတွေင်းမြော ကရ်း တယ။ double quote ထ

ကရ်းလည်း ရ တယ။ ပ ်းကတြောါ့ ကနောကက age က ေါ်ခခငတြော၊ age ဆိုတါ့ စကြော်းလို်း

တက
ို ရိုကက ေါ်ခခငတြော မဟိုတဘူ်း၊ age ထက မ်းထြော်းတါ့ တနြေို်း က ေါ်ခခငတြောမိုဲ့ single quote,

double quote မလို ဒတိုင်းကရ်း တယ။ ပ ်းကတြောါ့ ကရှေ့ကစြော ြော်းရှေ့ကနောကမြော

က က ေါ်ခခငတြော ြေစလိုဲ့ comma (,) နဲ့ ဆကလိုက တယ။

5. User လိုခခငတါ့ အက ြေ ထိုတ ပ ်းပ ြေစလိုဲ့ program ကို ရ လိုကတြောက exit ြေစ တယ။

Function and Return Statement

အက ေါ်က algorithm ကကတြောါ့ ကမွေ်းတခ


ါ့ ိုနစကတြောင်းတယ၊ တွေကခခကတယ၊ ပ ်းလိုဲ့

အက ြေရလြောကတြောါ့ အက ြေကို တစခ တည်း output ထိုတ တြော ြေစ တယ။ တစခ တည်း output

ထိုတ လိုကကတြောါ့ သူထိုတပ တဲဲ့အတိိုင်း ပမငရ ါမယ။ user က ဘာမ ဆက ို ိိုို့ မရ ါဘူ်း။

တကယလိုဲ့ user ကို စတကက ကလို ခွေငါ့က ်းခခငရင return နက ်းြေဲ့ိုလို တယ။ return

ပ နတယဆိိုတာ အပပဖကိို user ဆီ ပ နပ ်း ိိုကတာ ပဖစ ါတယ။ ဒီပတာဲ့ user က ပ နရ ာတဲဲ့

အပပဖကိို သူကကိြုကတဲဲ့ စ
ို နဲို့ output ထိုတ ိိုို့ရသ ိို၊ အဲဒီရ ာတဲဲ့ အပပဖပ ေါ်မာ မူတညပ ီ်း ဆကပ ီ်း

တွကချကမှုပတွ ို ချင ါက ည်း ဆက ို ိိုို့ ရ ါတယ။ ဒ က ကြောငါ့ output တန်းပ ်း

ထိုတက ်းထြောမခ ်းထက return နက ်းတြောကို ို ကဘြောကခ တယ။

ကနောကတစခိုက အ င
ို ်းကလ်း ခွေကရ်းတြောကို function လိုဲ့ကခေါ် တယ။ function ခွေကရ်း ခင်းအြော်း ြေငါ့

တစ ခြော်းကနရြောကတွေကကန ကခေါ်ပ ်း အ ို်း လိုဲ့ ရ ွေြော်းမြော ြေစ တယ။ ဒ က ကြောငါ့ function ကလ်းကတွေ

76 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

ခွေကရ်းကလါ့ရ တယ။ ခွေကရ်းကလါ့ရတယဆိုတြောထက ခွေပ ်း ကရ်းကို ကရ်း က တယ။ နမူနော ကညါ့

ကညါ့ ။

Algorithm: Age Calculation

ageCalculator(birth_year)

age = 2021 – birth_year

return age

function ကရ်း က
ို ရ်းနည်း ကို နရင်းရမယဆိုရငကတြောါ့ ကအြောကမြော ကြေေါ် ထြော်းတါ့ အ
ို တင
ို ်း

ကရ်းရ တယ။

functionName(parameter)

Body

Function name – variable လို တမတထြော်းတါ့ စည်းကမ်းအတွေင်းက ကိုယကက ကတါ့ အမည

က ်းလိုဲ့ ရ တယ။ ကနောကတစခို ကစခခငတြောက variable name နဲ့ function name လိုမခ ်း

programmer က စတကက ကက ်းတါ့ အမညမန မျှကို Identifier လိုဲ့ကခေါ် တယ။ ဒ ကကတြောါ့

ကက တိုန်းကလ်း ထညါ့က ြောတါ့ ကဘြော ။

Parameter – အလွေယက ြောရင input ။ တစခိုထက ိုခါ့ရငကတြောါ့ တစခိုနဲ့ တစခို ကြော်း comma (,)

ခြော်းပ ်း ကရ်းကလါ့ရ တယ။ input လကခြေမ


ိုဲ့ လိုဘူ်းဆိုရငကတြောါ့ အထက ဘြောမ မ က မါ့ function

ြေစတါ့အတွေက လက ည်းကွေင်း အြေွေငါ့ အ တကကတြောါ့ ကို ရ မယ။

Body - ကကတြောါ့ တွေကတြော ခခကတြော၊ အက ြေထွေကလြောရင return နတြောကတွေ လို မြော ြေစ တယ။

77 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

အက ေါ်က ကရ်း ထြော်းတါ့ ageCalculator function ကိုလမ်းကခေါ်ပ ်း 2000 ခိုနစကမွေ်းြေွေြော်း ူ

အတွေက တွေကခခငရင ans = ageCalculator(2000) လိုဲ့ လမ်းကခေါ်ရ မယ။ လမ်းကခေါ်လိုကတြောနဲ့

အက ေါ်က function ကို ွေြော်း အလို လို ပ ်းကတြောါ့ လက ည်းကွေင်းထမြော ထညါ့က ်းလိုကတါ့ 2000 ဟြော

function ရှေ့ birth_year ထကို ဝင ွေြော်းမြော ြေစ တယ။

ကနောကတစခိုက ans = ageCalculator(2000) လိုဲ့ကရ်းပ ်း လမ်းကခေါ်ထြော်းတြောဟြော function

ကကန တွေကခခကပ ်း return နက ်းထြော်းတါ့ အက ြေကို ans ထထညါ့မယလိုဲ့ က ြောတြော ြေစ တယ။ ans

ည variable name ြေစတါ့ အတွေက တမတထြော်းတါ့ စည်းကမ်းအတွေင်းကကန မမနစ ကရြော

အမည က ်းလိုဲ့ရ တယ။

2002 ကမွေ်းြေွေြော်းတါ့ ူအတွေက တွေကခခငရင 2002 ထညါ့က ်းပ ်း ကနောကတစကကမထ ပ ်း

ကခေါ်လိုကရို ။ result=ageCalculator(2002)၊ ageCalculator ရှေ့ parameter လကခတါ့

birth_year ထကို 2002 ကရြောက ွေြော်းမြော ြေစပ ်း၊ 2021 ထက 2002 နိုတလရ
ိုဲ့ တါ့ အက ြေကို function က

return နလိုကတါ့အခ ဒဘကက လမ်းကခေါ်တါ့ကနရြောက ြေမ်းထြော်းတါ့ result ဆိုတါ့ variable ထကို

ဝင ွေြော်းမြော ြေစ တယ။ ဒါဆိို function က return ပ နရင မ်းပခေါ်သို်းတဲဲ့ ပနရာကပနပ ီ်း အပပဖ

ပ နဖမ်းပ ်းရမယဆိိုတာ သပဘာပ ါကပ ာက ါပ ီ။

ကထြောငါ့မနစတိုဂ တစခိုရှေ့ area တွေကတါ့ algorithm ကလ်းကို input,output ကတြောင်းတါ့

အစအဆို်း စ
ို တစခို၊ function စ
ို တစခို၊ စိုစိုက င်း နစမခ ်းနဲ့ ကိုယဟြောက
ါ့ ိုယ

ကရ်း ကညါ့ ကညါ့ ။ ကထြောငါ့မနစတိုဂရှေ့ area က


ို နည်းက အလခြော်း * အန ြေစလိုဲ့ အလခြော်းနဲ့ အန

မ တွေကလမ
ိုဲ့ ရ ဘူ်း။ ဒ က ကြောငါ့ user ဆ ကမ်းရမြောက အလခြော်း နဲ့ အန၊ တွေကက ်းရမြောက area ။

ဒကလြောကဆို ကရ်းတတကလြောက ပ ။

78 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Chapter အနစချြု

ကရှေ့မြော က ြောခါ့ လို ယကနဲ့ကခတ အ ို်း ကန ကတါ့ programming language ကတွေ

အမခြော်းကက်းရ တယ။ Programmer တစကယြောက နဲ့ တစကယြောကဟြော ကျွမ်းကခငတြောကတွေ

မတူည က ဘူ်း။ နမူနော က ြောရမယ ဆိုရငကတြောါ့ Java ကျွမ်းကခငတါ့ programmer တစကယြောကဟြော

PHP ကိုကတြောါ့ နော်းလညခခငမ နော်းလည လမါ့မယ။ ဆိုလိုတြောက programmer တစကယြောကဟြော

language က င်းစို မကျွမ်းကခငနိုင ဘူ်း။

ဒ ဆို ူတိုဲ့ ဘိုနော်းလညတြော ဘြောလ ဆိုကတြောါ့ algorithm ကတွေ၊ pseudocode ကတွေ၊ Flowchart

ကတွေ ြေစ တယ။ algorithm ဆိုတြော programmer ကတွေ အြော်းလို်းနော်းလည တယ။ Algorithm

တစခိုဟြော လို ကဆြောငရမညါ့ အဆငါ့ဆငါ့ကို general က ြောထြော်းတြော ြေစလိုဲ့ Java မြော်းက အဒ

algorithm ကို အ ို်း ရင java စ


ို နဲ့ ကရ်းမယ၊ PHP မြော်းက အ ို်း မယဆိုရငလည်း PHP စ
ို နဲ့

က ြောင်းကရ်းမြောက ါ့ကလ။

Algorithm တစခိုဆိုတြော programmer ကတွေ အြော်းလို်းနော်းလညကအြောင၊ ယူ ို်းလိုဲ့ရကအြောင

ရညရယတြော ြေစ တယ။ ဒ က ကြောငါ့ algorithm တစခိုဟြော

1. ဘြောကတွေကို input အ ြေစလကခမယ၊ ဘယဟြောကတွေကို output အ ြေစ

ထိုတက ်းမယဆိုပ ်း input, output ကို ရင်းရင်းလင်းလင်း တတကခကခ ကြေေါ်

တမတက ်းထြော်းရ မယ။

2. Step by step အလို လို ိုကတွေဟြော ဟိုလိုလို ဒလိုလို ဒွေဟ ြေစစရြောကတွေ မ ရ

တ ြော်းရင်းလင်း ကနရ မယ။

3. Algorithm တစခိုဟြော programmer တင


ို ်း၊ programming language တိုင်းက ယူ ို်းလိုဲ့

ရကအြောင programming language တစခိုခို အက ေါ်မြော မခိုကနတြောမခ ်း မ ြေစရ ဘူ်း။

79 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

အခန်း (၇)

Control Flow and Flowchart

Conditional or Selection statement

Algorithm ဆိုတာ step by step procedure - လိုပ်ဆဆာင်ရမည် အဆင်ဆင် လိုို့

ဆ ပာခတယ်။ ဒါဆပမ အဒီအဆင်ဆတွေ ထမာ တခ ျို့အဆင်ဆတွေက လိုပ်ကိုလိုပ်ရတာမ ျိုး ြစ်ဆပမ၊

တခ ျို့အဆင်ဆတွေ ကဆတာ လိုပ်ခ င်လိုပမ


် ယ်၊ မလိုပ်ခ င် မလိုပ်ဘျိုးဆိုတ အဆ ခဆေမ ျိုးဆတွေ

ြစ်ပါတယ်။

ေမောအဆေေို့ မိုေ်သ
ို့ ွောျိုးစာျိုးမယ်ဆိုပါဆတာ။ ဘာစာျိုးမလ အရင်စဉ်ျိုးစာျိုးရမယ်၊ ပပီျိုးရင်

အဒီဆရျိုးခ ယ်လိုက်တ ဆိုင်ကိုသွောျိုးမယ်၊ ပပီျိုးရင် မာစာျိုးမယ်၊ ပေ်လာမယ်၊ ဒါဆတွေဟာ လိုပ်ကို

လိုပ်ရမည် အဆင်ဆတွေ ြစ်ပါတယ်။ သဆ


ိုို့ သာ် ဆိုင်ကို သွောျိုးတလမ်ျိုး တဝက်ဆရာက်မ ပက
ို ်ဆံအတ်

ဆမက ေ်ခတာ သတရတယ် ဆိုပါဆတာ။ အမ်ကို ပေ်ပပီျိုး ပက


ို ်ဆံအတ် ပေ်ယရပါမယ်။ အမ်ကို

ပက
ို ်ဆံအတ်က အပမတမ်ျိုး ပေ်ယမာလာျိုး ဆိုဆတာ မဟိုတပ
် ါဘျိုး။ ဆမက ေ်ခမ ပေ်ယမာပါ။ အဒီလိုို့

ြစ်မ လိုပ်မာ၊ မ ြစ်ရင် မလိုပ်ဘျိုး ဆိုတ အဆ ခဆေမ ျိုးကို conditional or selection statement လိုို့

ဆခေါ်ပါတယ်။

true false
ပိုကဆ
် ံအတ်
က ေ်ဆေခသလာျိုး။

ပေ်ယမယ် ဆိုင်ကို ဆက်သွောျိုးမယ်။

80 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

ဒီပိုဆ
ံ လျိုးကို flowchart လိုို့ဆခေါ်ပါတယ်။ ကကည်လိုက်ရင် ရင်ျိုးသွောျိုးမာပါ။ ပက
ို ်ဆံအတ်

ဆမက ေ်ဆေခသလာျိုး စစ်တယ်။ အဒီလို စစ်တာကို condition စစ်တယ်လဆ


ိုို့ ခေါ်ပါတယ်။ condition

စစ်တာကို flowchart မာ diamond shapeေို့ ဆွေပါတယ်။ condition စစ်လိုက်လိုို့ true ဆိုရင်

ပက
ို ်ဆံအတ် ဆမက ေ်ခတာ ြစ်တအတွေက် “ ပေ်ယမယ်” ဆိုတ အလိုပ် ကို လိုပ်ပါတယ်။ false

ထွေက်ခရင်ဆတာ ပိုက်ဆံအတ် ဆမမက ေ်ခဘျိုးဆိုတ အဓပပါယ် ြစ်တအတွေက်ဆကကာင် “ဆိုင်ကို

ဆက်သွောျိုးမယ်” ဆိုတ အလိုပ်ကို လိုပ်ပါမယ်။ “ ပေ်ယမယ်”၊ “ဆိုင်ကို ဆက်သွောျိုးမယ်” ဆိုတာဆတွေဟာ

အလိုပလ
် ိုပ်ဆဆာင်တာဆတွေ ြစ်တအတွေက် process ြစ်ပါတယ်။ process ကို flowchart မာ

rectangle (ဆလျိုးဆထာင်) ြင် ကိုယစ


် ာျိုး ပ ပါတယ်။

true false
ပိုကဆ
် ံအတ်
ပါခသလာျိုး။

ဆိုင်ကို ဆက်သွောျိုးမယ်။ ပေ်ယမယ်။

ဒီပိုက
ံ အဆပေါ်ကပံိုကို ဆောက်တစ်မ ျိုးေို့ ပေ်ဆွေထာျိုးတာ ြစ်ပါတယ်။ အဆပေါ်က ပံိုကဆတာ

“ပက
ို ်ဆံအတ်ဆမက ေ်ဆေခသလာျိုး” ဆိုတာကို condition စစ်ထာျိုးတာ ြစ်ပပီျိုး၊ ဒီပိုံကဆတာ

“ပက
ို ်ဆံအတ်ပါခသလာျိုး” ဆိုတ ရူ့ဆထာင်ကဆေ condition စစ်ထာျိုးတာ ြစ်ပါတယ်။ ဒါဆကကာင်

ဒီပိုမ
ံ ာဆတာ true ဆိုတာ ပက
ို ်ဆံအတ် ပါခတယ် ဆိုတ အဓပပါယ် ြစ်တအတွေက် “ဆိုင်ကို

ဆက်သွောျိုးမယ်” ဆိုတ အလိုပ်ကို လိုပ်မာ ြစ်ပပီျိုး၊ false ကဆတာ “ပက


ို ်ဆံအတ် မပါခဘျိုး” လိုို့ အဓပပါယ်

ရတအတွေက်ဆကကာင် “ ပေ်ယမယ်” ဆိုတ အလိုပ်ကို လိုပ်သွောျိုးမာ ြစ်ပါတယ်။ ဒါဆို condition ဆိုတာ

ကိုယက် က က်တ ရူ့ဆထာင်ကဆေ စစ်လိုို့ရတယ် ဆိုတာ ေို့ true နင် false ထွေက်တာဆတွေကို

သဆဘာဆပါက်ဆလာက်ပပီ ထင်ပါတယ်။

81 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

အဒီ ပံန
ို စ်ပိုက
ံ ို algorithm အဆေေို့ ဆရျိုးကကည်ပါမယ်။ ပထမပံိုဆိုရင်

If ပိုက်ဆံအတ်က ေ်ဆေခသလာျိုး then:

ပေ်ယမယ်။

Else:

ဆိုင်ကို ဆက်သွောျိုးမယ်။

ဒါဆလျိုးကို ကကည်လိုက်ရင် else ဆိုတာ false ဆတ


ို အဓပပါယ်ဆိုတာ သဆဘာဆပါက်ကကမာပါ။

ဒိုတယပံိုဆိုရင်

If ပိုက်ဆံအတ်ပါခသလာျိုး then:

ဆိုင်ကို ဆက်သွောျိုးမယ်။

Else:

ပေ်ယမယ်။

စာဆမျိုးပတစ်
ွေ ခိုမာ Myanmar, English, Math ဆိုတ ဘာသာရပ် 3 ခိုဆ ြရတယ်။

သံိုျိုးဘာသာလံိုျိုးဆအာင်ရင် စာဆမျိုးပဆအာင်
ွေ မယ်၊ တစ်ဘာသာက တာေို့ စာဆမျိုးပွေ က မယ်။

ဆအာင်မတ်က 40 ြစ်ပါတယ်။

If Myanmar >= 40 and English>=40 and Math>=40 then:

Write “You pass the exam”

Else:

Write “You fail the exam”

ရမတ်က 40 ေို့ ညီလဆအာင်တယ်၊ 40 ထက်ကကီျိုးလ ဆအာင်တယ်။ ဒါဆကကာင် >= ကို သံိုျိုးတယ်။

Greater than or equal လိုို့ ြတ်ပါတယ်။ Or ဆိုတ အတင


ို ်ျိုးတစ်ခိုမေ်ရင်၊ တစ်ခို ြစ်ရင် ရတယ်

82 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

ဆိုတအတွေက် > ကကီျိုးလည်ျိုးရတယ်၊ = ညီလည်ျိုး ရတယ် ဆိုတ သဆဘာပါ။ ပပီျိုးဆတာ ၃ ဘာသာလံိုျိုး

ဆအာင်မ ဆအာင်မာ ြစ်တအတွေက် ကကာျိုးထမာ and ေို့ ဆက်ဆပျိုးရပါတယ်။ ဆရျို့က သင်ခေ်ျိုးစာဆတွေကို

ဆသခ ာြတ်လာတ သအတွေက် အထျိုးအဆထွေ ရင်ျိုး ပဆေစရာမလိုဆလာက်ဘျိုး ထင်ပါတယ်။

သဆဘာဆပါက်မာပါ။ မဆပါက်ရင်ဆတာ and ေို့ or အဆကကာင်ျိုး ဆရျို့မာ ရင်ျိုးထာျိုးတာ ပေ်ြတ်ပါ။

က ဆအာင်တ ရူ့ဆထာင်ကဆေ ဆရျိုးပပီျိုးသာွေ ျိုးတာ ြစ်လိုို့ ကတ ရူ့ဆထာင်ကဆေ

ဆရျိုးကကည်ကကည်ပါမယ်။ ောျိုးလည်မလ
ှု ွေပပီျိုး တစ်ခိုခိုဆို ၂မ ျိုးဆရျိုးဆပျိုးရတယ် ထင်မဆေပါေအ
ို့ ံိုျိုး။ တစ်မ ျိုးပ

ဆရျိုးရင် ရပါပပီ။ ောျိုးလည်ဆအာင် ၂ မ ျိုးဆရျိုးပပီျိုး ရင်ျိုး ပတာ ြစ်ပါတယ်။ က တာကဆတာ

တစ်ဘာသာက ရင်က မယ် တစ်ခို ြစ်တာေို့ က မာ ြစ်တအတွေက် or ေို့ဆရျိုးပါမယ်။ အမတ် 40 ထက်

ငယ်ရင် က မာ ြစ်ပါတယ်။

If Myanmar < 40 or English<40 or Math<40 then:

Write “You fail the exam”

Else:

Write “You pass the exam”

Nested Conditional Statement

Nested Conditional Statement ဆိုတာ conditional statement ထမာ ဆောက်ထပ်

conditional statement ထပ်ပပီျိုး ပါတာ ြစ်ပါတယ်။

စာဆမျိုးပတစ်
ွေ ခိုမာ Myanmar, English, Math ဆိုတ ဘာသာရပ် ၃ ခို ဆ ြရတယ် ဆိုပါဆတာ။

အဒီမာ က တသကို Fail လို ထိုတ် ပခ င်တယ်။ အေည်ျိုးဆံိုျိုး ၁ ဘာသာ ဂိုဏ်ထျိုးထွေက်ရင် with D လိုို့

ထိုတ် ပခ င်တယ်။ ဂိုဏ်ထျိုးမထွေက်ပ ရိုျိုးရိုျိုးဆအာင်တ သဆတွေကို Pass လိုို့ ထိုတ် ပခ င်တယ် ဆိုပါဆတာ။

83 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

true Myanmar >=40 false


and English>=40
and Math>=40

Output “Fail”

true Myanmar >=75 or false

English>=75 or
Math>=75

Output “With D” Output “Pass”

▪ Pass / Fail က ၃ ဘာသာလံိုျိုးဆအာင်မ ဆအာင်မာ ြစ်တအတွေက် ဆအာင်တာကို စစ်ရင်

Myanmar>=40 and English>=40 and Math>=40 ဆိုပပီျိုး and ေို့ စစ်ရပါမယ်။ Fail က

တစ်ဘာသာ က တာေို့ က မာ ြစ်တ or နင် စစ်ပါမယ်။ ဒါဆပမ ဆအာင်တာေို့ က တာ နစ်ခိုထ

က တစ်ခို စစ်ရင် ရပါပပီ။ ဘာလိုို့လ ဆိုရင် မဆအာင်ရင် က ပပီျိုး၊ မက ရင် ဆအာင်လိုို့ ြစ်ပါတယ်။

▪ with D က တစ်ဘာသာ ဂိုဏ်ထျိုးထွေက်တာေို့ ထိုတ် ပမာ ြစ်လိုို့ or နင် စစ်ရမာ ြစ်ပါတယ်။

75 က ဂိုဏ်ထျိုးမတ် ြစ်တယ် ဆိုပါစ။ိုို့ ဒါဆပမ ရမတ်က 60, 30, 80 ဆိုရင်ဆကာ တစ်ဘာသာ

က ဆေတာကကီျိုး ကို ဂိုဏ်ထျိုး ဆပျိုးမလာျိုးဆိုရင် မဆပျိုးပါဘျိုး။ ဘာသာစံိုဆအာင်တ သကိုမ

ဂိုဏ်ထျိုးဆပျိုးမာ ြစ်ပါတယ်။ ဒါဆို ဆအာင်မ ဆပျိုးမာ ြစ်တအတွေက် ဆအာင်သလာျိုး အရင်

စစ်ရပါမယ်။ ဆအာင်တ သကိုမ ဂိုဏ်ထျိုး ထွေက်သလာျိုး ထပ်စစ်၊ ထွေက်ရင် With D လိုို့

ထိုတ် ပပပီျိုး၊ မထွေက်ရင် Pass လိုို့ ထိုတ် ပရမာ ြစ်ပါတယ်။

84 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Flowchart မာ input, output ကို parallelogram ေို့ ဆွေပါတယ်။ တစ် ခာျိုး symbol သံိုျိုးတာလ

ရပါဆသျိုးတယ်။ ဒီပိုမ
ံ ာ ဆအာင်သလာျိုးဆိုတ ဘက် ခမ်ျိုးမာ မ condition ထပ်လာတာဆကကာင်၊

conditional statement ထ conditional statement ပေ်လာတာမို့ို nested ြစ်ပါတယ်။ code

အဆေေို့ ဆရျိုးရင်ဆတာ

If Myanmar>=40 and English>=40 and Math>=40 then:

If Myanmar>=75 or English>=75 or Math>=75 then:

Write “With D”

Else:

Write “Pass”

Else:

Write “Fail”

က ဆအာင်တ ရူ့ဆထာင်ကဆေ စစ်ပပီျိုးဆတာ က တ ရူ့ဆထာင်ကဆေ စစ်တာဆလျိုး ဆောက်တစ်မ ျိုး ဆရျိုး

ကကည်ကကည်ရဆအာင်ပါ။

If Myanmar<40 or English<40 or Math<40 then:

Write “Fail”

Else:

If Myanmar>=75 or English>=75 or Math>=75 then:

Write “With D”

Else:

Write “Pass”

85 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

false Myanmar <40 true


or English<40
or Math<40

Output “Fail”
true
false Myanmar >=75
or English>=75
or Math>=75

Output “With
Output “Pass”
D”

က အထျိုးအဆထွေ ထပ်မရင်ျိုးပ ကကည်လိုက်တာေို့ သဆဘာဆပါက်မယ် ထင်ပါတယ်။

Nested အစ ်း နနောကတစနည်း

If Myanmar<40 or English<40 or Math<40 then:

Write “Fail”

Else If Myanmar>=75 or English>=75 or Math>=75 then:

Write “With D”

Else:

Write “Pass”

86 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Nested ဆရျိုးေည်ျိုးကို ဆောက်တစ်မ ျိုးဆရျိုးလိုို့ ရပါဆသျိုးတယ်။ Else ရယ် သ ရျို့ ဆအာက်က If

ရယ်ဆပါင်ျိုးပပီျိုး Else IF ဆိုပပီျိုး ဆရျိုးလိုက်လလ


ိုို့ ည်ျိုး ရပါတယ်။ အလိုပ်လိုပပ
် ဟ
ံို ာ အတပ ြစ်ပါတယ်။

အဆပေါ်မာဆရျိုး ပထာျိုးသလို ြစ်သွောျိုးမာပါ။

အလွေယ်မတ်လရ
ိုို့ တာက စစ်ရမာ 3ခိုေို့အထက်ဆိုရင် ဆရျို့ဆံိုျိုးတစ်ခိုက If ေို့ ဆရျိုး၊ ဆောက်ဆံိုျိုး

တစ်ခိုက Else ေို့ ဆရျိုး၊ အလယ်က က ေ်တာဆတွေက Else if ေို့ ဆရျိုး။ Else တစ်ခိုကလွေပပီျိုး If ဆရာ၊ Else

if ပါ condition လိုက်ပါတယ်။

num ဆိုတ ကေ်ျိုးဆလျိုးကို even positive လာျိုး၊ even negative လာျိုး၊ odd positive လာျိုး၊ odd

negative လာျိုး စစ်ဆပျိုးရမယ် ဆိုပါဆတာ။

2 => even positive

-2 => even negative

3 => odd positive

-3 => odd negative

ဒါဆကကာင် ကေ်ျိုးတစ်လံိုျိုးဟာ အဒီ ၄ မ ျိုးထက တစ်မ ျိုးမ ျိုး ြစ်မာ ြစ်ပါတယ်။ ဆရျို့ဆံိုျိုးတစ်ခိုကို if ေို့

စစ်မယ်၊ ဆောက်ဆံိုျိုးတစ်ခိုကို else ေို့ စစ်မယ် ဆိုဆတာ အလယ်မာ ၂ ခိုက ေ်ပါတယ်။ အဒီ ၂ ခိုကဆတာ

else if ေို့ ဆရျိုးရမာ ြစ်ပါတယ်။ Else တစ်ခိုကလွေပပီျိုး က ေ်တ if ဆရာ၊ else if ဆတွေပါ condition ပါရမာ

ြစ်ပါတယ်။ even ဆိုတာ 2 ေို့ စာျိုး ပတ်တာ ြစ်ပပီျိုး၊ odd က 2 ေို့ စာျိုးလိုို့ မ ပတ်(အကကွေင်ျိုး 0 ေို့မညီတာ)၊

positive ကဆတာ >=0 ြစ်ပပီျိုး၊ negative ကဆတာ <0 ြစ်တာ ြစ်ပါတယ်။

87 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

If (num mod 2) == 0 and num>=0 then:

Write num, “ is even positive”

Else If (num mod 2) == 0 and num < 0 then:

Write num, “ is even negative”

Else If (num mod 2) != 0 and num>=0 then:

Write num, “ is odd positive”

Else:

Write num, “ is odd negative”

အလိုပ်လိုပပ
် က
ံို

▪ IF ဆောက်က condition မေ်တာေို့ If ဆအာက်က Write num, “ is even positive” ဆိုတာကို

အလိုပ်လိုပပ် ပီျိုး ဆအာက်က Else if ဆတွေ Else ဆတွေကို အလိုပ်လိုပမ


် ာ မဟိုတ်ဆတာပါဘျိုး။

ဘာဆကကာင်လဆိုရင် selection ဆိုတာ အမ ာျိုးကကီျိုးထက တစ်ခိုကို ဆရျိုးခ ယ်တာ

ဆကကာင် ြစ်ပါတယ်။ သဆ
ိုို့ သာ် ဆောက်ထပ် If တစ်ခို ထပ်လာခရင်ဆတာ အလိုပ်လိုပမ
် ာ

ြစ်ပါတယ်။ ဘာဆကကာင်လဆိုရင် If ဆိုတာ selection အသစ်တစ်ခို စတယ် လိုို့ အဓပပါယ်

သက်ဆရာက်တာ ဆကကာင် ြစ်ပါတယ်။

▪ If ဆောက်က condition မာျိုးတယ်ဆိုမ ပထမ else if ကို ဆရာက်လာပပီျိုး သူ့ရျို့ conditon ကို

စစ်မာ ြစ်ပါတယ်။ သူ့ condition မေ်ခ ရင် သူ့ဆအာက်က Write num, “ is even negative”

ကို လိုပပ် ပီျိုး ဆအာက်က else if ေို့ else ကို လိုပမ


် ာ မဟိုတဆ
် တာပါဘျိုး။

▪ ပထမ else If ဆောက်က condition မာျိုးတယ်ဆိုမ ဒိုတယ else if ကို ဆရာက်လာပပီျိုး သူ့ရျို့

conditon ကို စစ်မာ ြစ်ပါတယ်။ သူ့ condition မေ်ခ ရင် သူ့ဆအာက်က Write num, “ is

odd positive” ကို လိုပပ် ပီျိုး ဆအာက်က else ကို လိုပမ


် ာ မဟိုတဆ
် တာပါဘျိုး။

88 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

▪ ဒိုတယ else if ပါမာျိုးတယ်ဆိုမ else ကို အလိုပ်လိုပမ


် ာ ြစ်ပါတယ်။ ဒါဆကကာင် else ဆိုတာ

အဆပေါ်က ဟာဆတွေ အာျိုးလံိုျိုးမာျိုးတယ်ဆိုမ အလိုပ်လိုပ်တာ ြစ်ပါတယ်။

အခိုဆ ပာသွောျိုးတ even positive လာျိုး၊ even negative လာျိုး၊ odd positive လာျိုး၊ odd

negative လာျိုး စစ်တာကို nested ပံစ


ို ံေို့ ပေ်ဆရျိုးဆပျိုးပါ။

Conditional Statement for Range

Range ဆတွေကိုစစ်တအခါ and ေို့ စစ်ဆပျိုးရပါတယ်။ ဥပမာ 1 ကဆေ 100 အတွေင်ျိုးဆိုတာကို or

ြင်ဆရျိုးခရင်

If n >= 1 or n<=100 then:

ဝင်လာတ n တေ်ြိုျိုးက 2000 ဆိုရင် အလိုပ်လိုပသ


် ွောျိုးမာပါ။ ဘာလိုို့လ ဆိုရင် n တေ်ြိုျိုး 2000 ဟာ 1

ထက်ကကီျိုးဆေတာ ြစ်လိုို့ n >= 1 မာ true ထွေက်သွောျိုးပါတယ်။ or ဆိုဆတာ တစ်ခိုမေ်တာေို့

အလိုပ်လိုပတ
် ာ ြစ်လိုို့ လိုပ်သွောျိုးမာ ြစ်ပါတယ်။ အမေ်က 1 ေို့ 100 ကကာျိုးဆိုတ အဆ ခဆေဟာ >=1 နင်

<=100 ဆိုတ အဆ ခအဆေ နစ်ခိုလံိုျိုး မေ်မ လိုပ်ခ င်တာ ြစ်လိုို့ and ေို့ စစ်ရမာ ြစ်ပါတယ်။ ဒါဆကကာင်

ဘယ်နင် ဘယ်ကကာျိုးဆိုရင် and နင် စစ်တာ ြစ်ပါတယ်။

If n >= 1 and n<=100 then:

လိုို့ ဆရျိုးရမာ ြစ်ပါတယ်။

89 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

ရမတ် ၉၀ ေို့ အထက် ဆိုရင် grade A, ၈၉ -၇၀ ကကာျိုးဆို grade B, ၆၉ - ၄၀ ဆိုရင် grade C, ၄၀

ဆအာက်ဆိုရင် grade D လိုို့ ဆိုပါစ။ိုို့

If mark>=90 then:
Write “grade A”
Else If mark<90 and mark>=70 then:
Write “grade B”
Else If mark<70 and mark>=40 then:
Write “grade C”
Else:
Write “grade D”
တစ်ခိုေို့ တစ်ခို နိုင်ျိုးယဉ်ရင် ြစ်နင
ို ်ဆခ ၃ ခိုပရပါတယ်။ ငယ်တာရယ်၊ ညီတာရယ်၊

ကကီျိုးတာရယ် ြစ်ပါတယ်။ ပထမ else if ကို ဆရာက်လာတာဟာ if ဆောက်က condition မာျိုးလိုို့

ဆရာက်လာတာ ြစ်ပါတယ်။ if မာက >=90 (90 ထက်ကကီျိုးသလာျိုး ညီသလာျိုး) စစ်ထာျိုးတာ ြစ်လိုို့ if

မာျိုးတယ်ဆိုတာ မကကီျိုးလည်ျိုးမကကီျိုးဘျိုး၊ ညီလည်ျိုးမညီဘျိုး ဆိုဆတာ ငယ်တာ ြစ်ပါတယ်။ ဒါဆကကာင်

မထမ else if ကို ဆရာက်လာကတည်ျိုးက 90 ထက်ငယ်ပပီျိုးသာျိုး ြစ်ပါတယ်။ ဒါကို 90

ထက်ငယ်သလာျိုး ထပ်စစ်တာဟာ စစ်ြို့ို အခ ေ်ကိုေ်တာအ ပင် မရပါဘျိုး။ ဒါဆကကာင် ပထမ else if မာ

<90 ကို ြ တ်ခလိုို့ရပါတယ်။

ထိုို့အတပါပ။ ဒိုတယ else if ကို ဆရာက်လာတာဟာ ပထမ else if မာျိုးလိုို့ ြစ်တယ်။

ဒါဆကကာင် 70 ထက်ငယ်ပပီျိုးသာျိုး ြစ်လိုို့ <70 ကို ြ တ်လိုို့ရပါတယ်။ ပေ်ဆရျိုး ပရမယ်ဆိုရင်

If mark>=90 then:
Write “grade A”
Else mark>=70 then:
Write “grade B”
Else If mark>=40 then:

90 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Write “grade C”
Else:
Write “grade D”
ဆိုပပီျိုး ြစ်သွောျိုးပါမယ်။ Condition တစ်ခိုဆလ ာသွောျိုးလိုို့ စစ်ရတာ အခ ေ်ကိုေ် သက်သာပါမယ်။

Flowchart Symbols

Symbol အမည် မတ်ခ က်

Start/End Program တစ်ခိုရျို့ အစေို့ အဆံိုျိုးကို ကိုယစ


် ာျိုး ပ ပါတယ်။

Process တွေက်တ ခ က်တ အလိုပ်လိုပ်ဆဆာင်တာဆတွေ

Input/ Output User ဆီက input ဆတာင်ျိုးတာေို့ user ကို output


ထိုတ် ပတ ဆေရာမာ သံိုျိုးပါတယ်။

Decision Condition စစ်တ အဆ ခအဆေမာ သံိုျိုးပါတယ်။

Arrow ဘာပပီျိုးရင် ဘာလိုပ်မယ် ဆိုပပီျိုး တစ်ခိုေို့ တစ်ခို ဆက်တ


အခါမာ သံိုျိုးပါတယ်။

On-page စာမ က်နာ တစ်မ က်နာထမာရတ flowchart


Connector အစတ်အပိုင်ျိုးဆတွေကို ခ တ်ခ င်ရင် သံိုျိုးပါတယ်။

Off-page ပံဆ
ို ွေလိုို့ တစ်မ က်နာေို့ မဆံဆတာရင် တစ်မ က်နာေို့
Connector ဆောက် တစ်မ က်နာ ကို ခ တ်ဆက်ဆကကာင်ျိုး ပခ င်ရင်
သံိုျိုးပါတယ်။

ေမောဆလျိုးဆွေကကည်ရဆအာင်။ မဆွေခင်ဆလျိုး တစ်ခိုထပ်ဆ ပာခ င်တာက ကဆလျိုးဆလျိုး တစ်ဆယာက်

ဆမွေျိုးလာရင် အမည်ဆပျိုး ကင်ပွေေျိုး် တပ် လိုပ်ရသလိုပ ဘာ variables ဆတွေသံိုျိုးမလဆိုတာကို DataType

variableName ပံစ
ို ံနင် ဆကကာ ငာဆပျိုးရပါတယ်၊ Declaration လိုပ်တယ်လိုို့ ဆခေါ်ပါတယ်။ ဒီမာဆတာ

91 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Myanmar, English, Math ဆိုတ variable ၃ ခို သံိုျိုးပါမယ်။ ၃ ခိုလံိုျိုးဟာ အမတ်သမ်ျိုးမာ ြစ်လိုို့ data

type က ဂဏေ်ျိုး num ြစ်ပါမယ်။


Start

Declarations

Num Myanmar,English,Math

Output “Enter your marks


for Myanmar, English and
Math”

Input Myanmar, English,


Math

false Myanmar <40 or true


English<40 or
Math<40

Output “Fail”

false Myanmar >=75 true

or English>=75
or Math>=75

Output “Pass” Output “With D”

End

92 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

န ေ့ကျငေ့ကကညေ့ရနအ င။

User ထံမ ခိုနစ် တစ်ခိုကို ဆတာင်ျိုးပါ။ ပပီျိုးလျှင် leap year ဟိုတမ


် ဟိုတ် စစ်ပါ။

ဆပျိုးလိုက်တခိုနစ်သည် 4 ြင် စာျိုး ပတ်ပပီျိုး 100 ြင် စာျိုးလိုို့ မ ပတ်လျှင် သမ


ိုို့ ဟိုတ် 400 ြင်

စာျိုး ပတ်လျှင် leap year ြစ်ပါတယ်။ စာျိုး ပတ်တယ်ဆိုတာ အကကွေင်ျိုး (mod တွေက်တာ 0) 0

ရတာ ြစ်ပပီျိုး စာျိုးမ ပတ်ဘျိုး ဆိုတာ အကကွေင်ျိုး 0 ေို့ မညီတာ ြစ်ပါတယ်၊ (== ညီတာ, != မညီတာ)

2000 => 400 ေို့ စာျိုး ပတ်လိုို့ 2000 is leap year လိုို့ ထိုတ်မယ်

1900 => 400 ေို့လည်ျိုး မ ပတ်ဘျိုး။ 4 ြင် ပတ်ပပီျိုး 100 ေို့ ပါစာျိုး ပတ်ဆေလိုို့ 1900 is not leap year

1904 => 4 ြင် ပတ်ပပီျိုး 100 ေို့ မ ပတ်လိုို့ 1904 is leap year

Looping or Iteration

တညီတ အလိုပ်ကို ထပ်ခါထပ်ခါလိုပ်တာကို looping ပတ်တယ် လိုို့ ဆ ပာပါတယ်။ Iteration

လိုို့လည်ျိုး ဆခေါ်ပါတယ်။ ဆပါင်ျိုးတ အလိုပ်ကို ထပ်ခါထပ်ခါလိုပတ


် ယ်၊ နိုတ်တ အလိုပ်ကို ထပ်ခါထပ်ခါ

လိုပ်တယ်၊ စကာျိုးတစ်ခွေေ်ျိုးကို ထပ်ခါထပ်ခါ ဆ ပာတယ်၊ စသည် ြင် အဒီလို ထပ်ခါထပ်ခါ လိုပ်တာ

ဆတွေအာျိုးလံိုျိုးဟာ looping ဆတွေ ပါပ။ အလွေယ်ေည်ျိုးဆိုရင်ဆတာ looping ဆိုတာ အမျိုးသမာျိုးလိုို့သာ

မတ်ထာျိုး။ မလာျိုးရင် ရစ်တယ်၊ ရစ်တယ်ဆိုတာ တညီတ အဆကကာင်ျိုးအရာကို ထပ်ခါထပ်ခါ ဆ ပာတာ။

အဒါ looping or iteration ပ။

ဥပမာ 1, 3, 5, 7, 9, …, 97, 99 ဆိုပပီျိုး ထိုတ် ပခ င်တယ် ဆိုပါဆတာ။ ကေ်ျိုးစဉ်တေ်ျိုးကို ကကည်ပါ။

1 ဆောက်မာ comma ပါတယ်၊ 3 ဆောက်မာ comma ပါတယ်၊ 97 ဆောက်အထ comma ပါတယ်။ 99

ဆောက်မာ comma မပါဆတာဘျိုး။

93 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

looping ဆိုတာ တညီတ အလိုပ်ကို ထပ်ခါထပ်ခါ လိုပ်တာ ြစ်လိုို့ မတတ 99 ကို ခဏ

ြယ်ထာျိုးမယ်၊ 1 ကဆေ 97 အထ ထိုတ်လိုို့ ပပီျိုးမ သကို သပ်သပ် လိုပ်မယ်။

looping တစ်ခို မာ အပင


ို ်ျိုး ၃ ပိုင်ျိုးပါပါတယ်။

▪ Initialization - ဘယ်ကစမာလ၊

▪ Condition - ဘယ်အထ အလိုပ်လိုပမ


် ာလ၊

▪ Update - တစ်ကကမ်ပပီျိုးတင
ို ်ျိုး ဘာလိုပ်မာလ။

အခို ထိုတ်ခ င်တာက 1, 3, 5, 7, …, 95, 97,

ဒီဆတာ ဘယ်က စ မလ 1 က စပါတယ်၊ ဘယ်ထ လိုပ်မလ 97 ထ၊ တတက က ဆ ပာရရင်

အဆရျို့ကို ပေ်ကကည်လိုက်ဆတာ 1,3, 5, …, 95 ဆိုတာ 97 ထက်ငယ်တယ်၊ 97 ကဆတ 97 ေို့ ညီတယ်၊

ဒီဆတာ 97 ထက်ငယ်ပပီျိုး ညီတ အထ(<=97) လိုို့ ဆရျိုးလိုို့ရသလို၊ 99 ထက်ငယ်တ အထ ဆိုရင်လည်ျိုး

(<99) အတတပါပ။

တစ်ကကမ်ပပီျိုးတိုင်ျိုး ဘာလိုပ်မလ။ ကေ်ျိုးစဉ်တေ်ျိုးမာ 1 ပပီျိုးရင် 3၊ 3 ပပီျိုး ရင် 5 စသည် ြင် တစ်ခိုပပီျိုး

တစ်ခို 2 တျိုးို သွောျိုးပါတယ်။ ဒါဆကကာင် တစ်ကကမ်ပပီျိုး တင


ို ်ျိုး 2 တိုျိုး (2 ဆပါင်ျိုး) သွောျိုးပါမယ်။ အဒါကို

တေ်ြိုျိုးဆ ပာင်ျိုးတယ်၊update လိုပ်တယ် လိုို့ ဆခေါ်ပါတယ်။ Looping တစခုရဲ့ အသကဟ update ပ

ဖြစပါတယ။ update ဆမက ေ်ခရင် N တေ်ြိုျိုးဟာ 1 ကဆေ မဆ ပာင်ျိုးဆတာပါဘျိုး၊ ဒီဆတာ N ဟာ 99

ထက် အပမငယ်ပပီျိုး looping ကဆေ မထွေက်ဆတာပ တစ်သက်လံိုျိုး ပတ်ဆေပါဆတာတယ်။ အဒါကို

infinite loop လိုို့ဆခေါ်ပါတယ်။ ဒါဆကကာင် infinite loop မဖြစရနအ င update မနမေ့ြုို့ ုပါတယ။

က စလိုက်ကကရဆအာင်။

ဂဏေ်ျိုးဆတွေ သမ်ျိုးြို့ို variable name ကို N လိုို့ ဆပျိုးလိုက်ပါမယ်။

94 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

N=1 Initialization

true false
N < 99

Condition

Output N, “,”

Update
N=N+2 Output N

ပံမ
ို ာ initialization, condition, update ကို မင်သာဆအာင် label တပ်ဆပျိုးထာျိုးပါတယ်။

Flowchart ကို ရိုတတ


် ရက် ကကည်လိုက်ရင် conditional statement ေို့ တသလို ထင်ရပါတယ်။ လံိုျိုးဝ

မတပါဘျိုး။ conditional statement က အဆပေါ်ကို ပေ်မတက်ပါဘျိုး၊ looping က ပေ်တက်ပါတယ်။

true ြက် ခမ်ျိုးမာ အဆပေါ်ကို ပေ်တက်တာကို မင်သာဆအာင် ဆွေ ပထာျိုးပါတယ်။ Condition မ နတ ေ့

အနပေါ်ဖပနမတကနတ ေ့ပ arrow က နအ ကကု ဆင်းသ ်း ုို့ တစခါပ ုပပါတယ။

Looping ကနတ ေ့ condition စစတယ၊ မနရင နအ ကဆင်းပပ်း ုပစရ ရတ ုပတယ၊

ပပ်းတ နို့ arrow ဟ condition ဆ ဖပနတကတယ၊ ထပစစတယ မနရင နအ ကဆင်းပပ်း

ုပစရ ရတ ုပမယ၊ ပပ်းတ နို့ arrow ဟ condition ဆ ဖပနတကတယ၊ အဒ ုနို့ looping

ပတနနတ ၊ ဘယအချန ရပမ ဆုနတ ေ့ condition စစတ false ထကရင looping ထ က

ထကသ ်းပပ်း ကျနတေ့ ုပစရ ရတ ဆက ုပမယ။

အဆပေါ်က Flowchart အပင


ို ်ျိုးအစဆလျိုးကို အစ အဆံိုျိုး trace လိုက်ကကည်ရဆအာင်။ Trace

မ ုကခင Flowchart ကု စ အုပထ ချဆထ ်းပါ၊ ပပ်းမ trace ုကပါ။ ဒါမ မျကစမ ညမ ပါ။

95 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

ပထမ စစခ င်ျိုး N=1 ဆိုပပီျိုး N ထကို 1 ထည်လိုက်တယ်။ ပပီျိုးဆတာ N<99 ဆိုတ condition ကို

စစ်ဆတာ N တေ်ြိုျိုးသည် ယခိုလက်ရ 1 ြစ်တအတွေက် 99 ထက်ငယ်တယ်၊ ဒီဆတာ မေ်တယ်၊

မေ်ဆတာ မေ်တဘက် ဆအာက်ဆင်ျိုးဆတာ N ေို့ comma ကို ဆက်ထိုတ်တယ်၊ 1, ဆိုပပီျိုးထွေက်မယ်၊

ပပီျိုးရင် N ကို 2 ဆပါင်ျိုးပပီျိုး N ထ ပေ်ထည်တယ်။

ယခိုလက်ရ N 3 ြစ်သွောျိုးမယ်၊ update ပပီျိုးတာေို့ arrow ဟာ အဆပေါ် ပေ်တက်ပပီျိုး condition

ဆီဆရာက်တယ်၊ ယခိုလက်ရ N တေ်ြိုျိုး 3 ဟာ 99 ထက်ငယ်တယ်။ မေ်ဆတာ ဆအာက်ဆင်ျိုးလိုပ်ဆတာ

3, ထပ်ထိုတ်ဆတာ 1,3, ဆပို ပီျိုး output ထွေက်ပပီျိုးသာျိုး ြစ်မယ်။ ပပီျိုးရင် update လိုပ်ပပီျိုး 2 တျိုးို ဆတာ N

တေ်ြိုျိုး 5 ြစ်မယ်။

condition စစ်တယ်၊ N တေ်ြိုျိုး 5 ဟာ 99 ထက်ငယ်တယ်။ ဒီဆတာ မေ်ဆတာ 1, 3, 5, ရမယ်၊

ဒီလိုေို့ 99 ထက်ငယ်တ 97, ထ ထိုတ်သွောျိုးမယ်။

1, 3, 5, 9, … , 97,

ပပီျိုးတာေို့ N ကို 2 ဆပါင်ျိုးပပီျိုး update လိုပ်ဆတာ N တေ်ြိုျိုး 99 ြစ်မယ်၊ update ပပီျိုးတာေို့

condition ဆီ ပေ်တက်ဆတာ N တေ်ြိုျိုး 99 ဟာ 99 ထက် မငယ်ဆတာဘျိုး၊ ဒီဆတာ condition

မာျိုးတယ်၊ မာျိုးဆတာ looping ကဆေ ထွေက်ပပီျိုး false ဘက် ခမ်ျိုးသွောျိုးလိုပ်ဆတာ N ကို comma မပါပ

ထိုတ်တယ်။

1, 3, 5, 9, … , 97, 99

ဆိုပပီျိုး ြစ်သွောျိုးမယ်။ ဒီဆလာက်ဆိုရင် looping ဆိုတာရယ်၊ looping နင် condition ကွော ခာျိုးခ က်ရယ်

ကို သဆဘာဆပါက်ဆလာက်ပါပပီ။ code ေို့ ဆရျိုးကကည်ရင်

N =1 (initialization)

96 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Repeat while N < 99: (condition)

Write N, “,”

N = N + 2 (update)

End of Loop

Write N

ဆိုပပီျိုး ရပါမယ်။ ဆောက်တေည်ျိုး ဆရျိုး ပပါအံိုျိုးမယ်။

Repeat for N=1 to 97 by 2: N=1, initialization N တေ်ြိုျိုး 1 ကဆေစမယ်

Write N, “,” To 97, condition 97 ဆရာက်သည်ထ လိုပ်မယ်

End of Loop By 2, update တစ်ကကမ်ပပီျိုးတိုင်ျိုး ၂ ဆပါင်ျိုးမယ်

Write N

ဒီဆလာက်ဆိုရင် looping သဆဘာတရာျိုး ောျိုးလည်ဆလာက်ပါပပီ။

န ေ့ကျငေ့ကကညေ့ရနအ င။

100, 95, 90, 85, …, 5, 0

(0 ဆောက်မာ comma မပါလိုို့ 0 ကို သပ်သပ်ြယ်ထာျိုး၊ looping ပပီျိုးမ လိုပ်မယ်။ ဒါဆို looping

ဘယ်ကစ 100 ကစ၊ ဘယ်အထလ 5 အထ၊ ဆရျို့ကို ပေ်ကကည်ဆတာ 100 တိုို့ 95 တို့ဟ
ို ာ 5

ထက်ကကီျိုးတယ်။ ဒီဆတာ ဘယ်အထလဆိုရင် >=5 (5 ထက်ကကီျိုးပပီျိုး ညီတအထ)၊ 100 ပပီျိုးရင် 95, 95

ပပီျိုးရင် 90 စသည် ြင်သွောျိုးဆတာ တစ်ကကမ်ပပီျိုးတိုင် 5 နိုတ)်

i =100 Repeat for i=100 to 5 by -5:


Repeat while i >=5 :
Write i, “,”
Write i, “,”

97 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

i=i-5 End of Loop


End of Loop
Write i
Write i

1, 4, 9, 16, 25, ….. 100

1+ 1/2 + 1/3 + 1/4 + ……+ 1/n (n တေ်ြိုျိုးကို user ထံမ ဆတာင်ျိုးပါ၊ n တေ်ြိုျိုး 5 ဆရ
ို င် 1/5

အထ၊ n တေ်ြိုျိုး 100 ဆိုရင် 1/100 အထ စသည် ြင် လိုပ်သွောျိုးမာ ြစ်ပါတယ်)

Nested loop

Conditional statement လိုပါပ Looping မာ လည်ျိုး nested loop ရပါတယ်။ looping ထ

looping ပေ်ပါတာ ြစ်ပါတယ်။ အ ပင်ဘက်က looping ကို outer loop လိုို့ ဆခေါ်ပပီျိုး၊ အတွေင်ျိုးထက

looping ကိုဆတာ inner loop လိုို့ ဆခေါ်ပါတယ်။

အလိုပ်လိုပပ
် က
ံို ဆတာ outer loop တစ်ကကမ်မာ inner loop ပပီျိုးဆအာင်လိုပ၊် outer loop

ဆောက်တစ်ကကမ်မာ inner loop ပပီျိုးဆအာင်လိုပ် စတ ပံစ


ို ံေို့ အလိုပ်လိုပပ
် ါတယ်။ ဒါဆကကာင် တစ်ကကမ်

တစ်ကကမ် ဆိုပပီျိုး လိုပ်ခ င်တ ဆကာင်သည် outer loop ြစ်ပပီျိုး၊ အဒီ တစ်ကကမ်ထမာ အမ ာျိုးကကီျိုး

လိုပ်ခ င်တ ဆကာင်သည် inner loop ြစ်ပါတယ်။ ေမောဆလျိုး ကကည်ကကည်ရဆအာင်ပါ။

No 1.

Question 1

Question 2

Question 3

Question 4

98 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

No 2.

Question 1

Question 2

Question 3

Question 4

No 3.

Question 1

Question 2

Question 3

Question 4

အခို ပထာျိုးတာဆလျိုးကို ကကည်လိုက်ရင် No 1. မာ question 4 ခို၊ No 2. မာ question 4 ခို၊

No 3. မာ question 4 ခို ြစ်ပါတယ်။ No ဆိုတာ တစ်ကကမ်စီမာ Question 4 ခို အလိုပ်လိုပ်

သွောျိုးတာ ြစ်ပါတယ်။ ဒါဆကကာင် တစ်ကကမ်စီ လိုပ်တ No သည် outer loop ြစ်ပပီျိုး၊ Question ကဆတာ

inner loop ြစ်မာ ြစ်ပါတယ်။ No အတွေက် variable တစ်ခိုေို့ Question အတွေက် variable တစ်ခို

လိုပါတယ်။ N နင် Q ဆိုပပီျိုး အမည် ဆပျိုးလိုက်ပါမယ်။ Output ထိုတ်တ အခ ေ်မာလည်ျိုး No 1. နင်

Question 1 ဆိုတ ပံစ


ို ံေို့ ဆပေါ်ခ င်တာ သတထာျိုးပါ။ တက
ို ်ရိုက်ဆပေါ်ခ င် single quote or double

quote ထဆရျိုး၊ တေ်ြိုျိုးဆပေါ်ခ င် ဒီတိုင်ျိုးဆရျိုး၊ အဒီနစ်ခိုကို ဆက်ပပီျိုး ဆပေါ်ခ င်ရင် comma ေို့ဆက်။

1. N = 1 1. Repeat for N=1 to 3 by 1:


2. Repeat while N < 4 2. Write ‘No ’, N, ‘.\n’
3. Write ‘No ’, N, ‘.\n’ 3. Repeat for Q=1 to 4 by 1:
4. Q=1 4. Write ‘Question ’, Q,’\n’
5. Repeat while Q<5 5. End of Loop
6. Write ‘Question ’, Q,’\n’ 6. End of Loop
7. Q=Q+1

99 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

8. End of Loop
9. N=N+1
10. End of Loop

က while ေို့ ဆရျိုးထာျိုးတာဆလျိုးကို trace လိုက် ပပါမယ်။ trace လိုက် ပရင် ဆ ပာရတာ လွေယ်ဆအာင်

ဆဘျိုးမာ line no တပ်ထာျိုးဆပျိုးပါတယ်။ line no 8 က end of loop ဆတ


ို ာ inner loop ရျို့

အပတ် ြစ်လိုို့ inner loop ရျို့ condition ကို ပေ်တက်မာ ြစ်ပါတယ်။ Line 10 ကဆတာ outer loop

ရျို့ အပတ် ြစ်တ အတွေက်ဆကကာင် outer loop ရျို့ condition ကို ပေ်တက်မာ ြစ်ပါတယ်။

Line No N Q အ ုပ ုပပု Output

1 1 N ထကို 1 ထည်တယ်။

2 N<4 → 1<4 မေ်ဆတာ line 3 သွောျိုးမယ်။

3 \n ဆိုတာ Enter ပါပ။ Write Write ‘No ’, N, ‘.\n’ ဆဆ


ို တာ No 1.

output အကွေက်မာ ပထာျိုးတ အတင


ို ်ျိုး output ထွေက်မယ်။

4 1 Q ထကို 1 ထည်တယ်။

5 Q<5 → 1<5 ဆိုဆတာ မေ်တယ် line 6 ကိုသွောျိုးမယ်။

6 Write ‘Question ’, Q,’\n’ ဆိုဆတာ output အကွေက်မာ Question 1

ပထာျိုးတ အတင
ို ်ျိုး ထိုတ် ပပပီျိုး ဆအာက်တစ်ဆကကာင်ျိုး

ဆင်ျိုးမယ်။

7 2 Q=Q+1

8 End of loop ဆိုတာ inner loop ရျို့ အပတ် ြစ်တအတွေက်

inner loop ရျို့ condition ြစ်တ line 5 ကို တက်မယ်။

100 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

5 Q<5 → 2<5 မေ်ဆတာ line 6 ကိုသွောျိုးမယ်

6 Write ‘Question ’, Q,’\n’ Question 2

7 3 Q=Q+1

8 End of loop ဆိုတာ inner loop ရျို့ အပတ် ြစ်တအတွေက်

inner loop ရျို့ condition ြစ်တ line 5 ကို တက်မယ်။

5 Q<5 → 3<5 မေ်ဆတာ line 6 ကိုသွောျိုးမယ်

6 Write ‘Question ’, Q,’\n’ Question 3

7 4 Q=Q+1

8 End of loop ဆိုတာ inner loop ရျို့ အပတ် ြစ်တအတွေက်

inner loop ရျို့ condition ြစ်တ line 5 ကို တက်မယ်။

5 Q<5 → 4<5 မေ်ဆတာ line 6 ကိုသွောျိုးမယ်

6 Write ‘Question ’, Q,’\n’ Question 4

7 5 Q=Q+1

8 End of loop ဆိုတာ inner loop ရျို့ အပတ် ြစ်တအတွေက်

inner loop ရျို့ condition ြစ်တ line 5 ကို တက်မယ်။

5 Q<5 → 5<5 ဆိုဆတာ 5 ဟာ 5 ထက်မငယ်ဆတာ inner

loop condition မာျိုးသွောျိုးတ အတွေက် inner loop ကဆေ

အ ပင်ထွေက်မယ်။ inner loop အ ပင်ဆိုတာ inner loop ရျို့

အပတ် line no 8 ရျို့ အ ပင်ဆိုဆတာ line no 9 ကိုသွောျိုးမယ်။

9 2 N=N+1

101 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

10 End of loop ဆိုတာ outer loop ရျို့ အပတ် ြစ်တအတွေက်

outer loop ရျို့ condition ြစ်တ line no 2 ကို

ပေ်တက်မယ်။

2 N < 4 → 2 < 4 ဆိုဆတာ မေ်တယ်၊ line 3 ကိုသွောျိုးမယ်။

3 Write Write ‘No ’, N, ‘.\n’ No 2.

4 1 Q ထကို 1 ထည်တယ်။

5 Q<5 → 1<5 ဆိုဆတာ မေ်တယ် line 6 ကိုသွောျိုးမယ်။

6 Write ‘Question ’, Q,’\n’ ဆိုဆတာ output အကွေက်မာ Question 1

ပထာျိုးတ အတင
ို ်ျိုး ထိုတ် ပပပီျိုး ဆအာက်တစ်ဆကကာင်ျိုး

ဆင်ျိုးမယ်။

7 2 Q=Q+1

8 End of loop ဆိုတာ inner loop ရျို့ အပတ် ြစ်တအတွေက်

inner loop ရျို့ condition ြစ်တ line 5 ကို တက်မယ်။

5 Q<5 → 2<5 မေ်ဆတာ line 6 ကိုသွောျိုးမယ်

6 Write ‘Question ’, Q,’\n’ Question 2

7 3 Q=Q+1

8 End of loop ဆိုတာ inner loop ရျို့ အပတ် ြစ်တအတွေက်

inner loop ရျို့ condition ြစ်တ line 5 ကို တက်မယ်။

5 Q<5 → 3<5 မေ်ဆတာ line 6 ကိုသွောျိုးမယ်

6 Write ‘Question ’, Q,’\n’ Question 3

7 4 Q=Q+1

102 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

8 End of loop ဆိုတာ inner loop ရျို့ အပတ် ြစ်တအတွေက်

inner loop ရျို့ condition ြစ်တ line 5 ကို တက်မယ်။

5 Q<5 → 4<5 မေ်ဆတာ line 6 ကိုသွောျိုးမယ်

6 Write ‘Question ’, Q,’\n’ Question 4

7 5 Q=Q+1

8 End of loop ဆိုတာ inner loop ရျို့ အပတ် ြစ်တအတွေက်

inner loop ရျို့ condition ြစ်တ line 5 ကို တက်မယ်။

5 Q<5 → 5<5 ဆိုဆတာ 5 ဟာ 5 ထက်မငယ်ဆတာ inner

loop condition မာျိုးသွောျိုးတ အတွေက် inner loop ကဆေ

အ ပင်ထွေက်မယ်။ inner loop အ ပင်ဆိုတာ inner loop ရျို့

အပတ် line no 8 ရျို့ အ ပင်ဆိုဆတာ line no 9 ကိုသွောျိုးမယ်။

9 3 N=N+1

10 End of loop ဆိုတာ outer loop ရျို့ အပတ် ြစ်တအတွေက်

outer loop ရျို့ condition ြစ်တ line no 2 ကို

ပေ်တက်မယ်။

2 N < 4 → 3 < 4 ဆိုဆတာ မေ်တယ်၊ line 3 ကိုသွောျိုးမယ်။

3 Write Write ‘No ’, N, ‘.\n’ No 3.

4 1 Q ထကို 1 ထည်တယ်။

5 Q<5 → 1<5 ဆိုဆတာ မေ်တယ် line 6 ကိုသွောျိုးမယ်။

103 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

6 Write ‘Question ’, Q,’\n’ ဆိုဆတာ output အကွေက်မာ Question 1

ပထာျိုးတ အတင
ို ်ျိုး ထိုတ် ပပပီျိုး ဆအာက်တစ်ဆကကာင်ျိုး

ဆင်ျိုးမယ်။

7 2 Q=Q+1

8 End of loop ဆိုတာ inner loop ရျို့ အပတ် ြစ်တအတွေက်

inner loop ရျို့ condition ြစ်တ line 5 ကို တက်မယ်။

5 Q<5 → 2<5 မေ်ဆတာ line 6 ကိုသွောျိုးမယ်

6 Write ‘Question ’, Q,’\n’ Question 2

7 3 Q=Q+1

8 End of loop ဆိုတာ inner loop ရျို့ အပတ် ြစ်တအတွေက်

inner loop ရျို့ condition ြစ်တ line 5 ကို တက်မယ်။

5 Q<5 → 3<5 မေ်ဆတာ line 6 ကိုသွောျိုးမယ်

6 Write ‘Question ’, Q,’\n’ Question 3

7 4 Q=Q+1

8 End of loop ဆိုတာ inner loop ရျို့ အပတ် ြစ်တအတွေက်

inner loop ရျို့ condition ြစ်တ line 5 ကို တက်မယ်။

5 Q<5 → 4<5 မေ်ဆတာ line 6 ကိုသွောျိုးမယ်

6 Write ‘Question ’, Q,’\n’ Question 4

7 5 Q=Q+1

104 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

8 End of loop ဆိုတာ inner loop ရျို့ အပတ် ြစ်တအတွေက်

inner loop ရျို့ condition ြစ်တ line 5 ကို တက်မယ်။

5 Q<5 → 5<5 ဆိုဆတာ 5 ဟာ 5 ထက်မငယ်ဆတာ inner

loop condition မာျိုးသွောျိုးတ အတွေက် inner loop ကဆေ

အ ပင်ထွေက်မယ်။ inner loop အ ပင်ဆိုတာ inner loop ရျို့

အပတ် line no 8 ရျို့ အ ပင်ဆိုဆတာ line no 9 ကိုသွောျိုးမယ်။

9 4 N=N+1

10 End of loop ဆိုတာ outer loop ရျို့ အပတ် ြစ်တအတွေက်

outer loop ရျို့ condition ြစ်တ line no 2 ကို

ပေ်တက်မယ်။

2 N < 4 → 4 < 4 ဆိုဆတာ မာျိုးတယ်၊ မာျိုးဆတာ outer loop

ထက ထွေက်မယ်ဆိုဆတာ outer loop အပတ် line no 10

အ ပင်ကို သွောျိုးဆတာ ဘာမမရဆတာလိုို့ (line no 11)

မရဆတာလိုို့ ပပီျိုးသွောျိုးတယ်။ output column ကို

ကကည်ကကည်ပါ။ အဆ ြ လိုခ င်တ အတင


ို ်ျိုး ထွေက်ဆေတာ

ဆတွေျို့ရပါလမ်မယ်။

အဆပေါ်က while looping ပါ စာအိုပထ


် ခ ဆရျိုးပပီျိုးဆတာ trace လက
ို ်တာ ဟာ

အဆကာင်ျိုးဆံိုျိုးေည်ျိုးပါပ။ ကကည်ရင် သဆဘာဆပါက်ဆကာင်ျိုး သဆဘာဆပါက်ပါလမမ


် ယ်၊ ဒါဆပမ ခ ဆရျိုးပပီျိုး

trace လိုက်လိုက်ရင် သဆဘာဆပါက်တာ ဟိုဘက်ဆရာက်ပပီျိုး သဆဘာတရာျိုး ဆကာင်ျိုးဆကာင်ျိုး

105 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

သဆဘာဆပါက်သွောျိုးပါလမ်မယ်။သင်ခေ်ျိုးစာအာျိုးလံိုျိုးကို note စာအိုပထ


် မတ်ပါ၊ တွေက်စရာရတာဆတွေ

အကိုေ်ခ တွေက်ပါ။

ဆအာက်မာ ပထာျိုးတ ပံစ


ို ံဆလျိုး ဆပေါ်ဆအာင် ဆလက င်ကကည်ကကရဆအာင်ပါ။

Week 1

1 2 3 4 5 6 7

Week 2

8 9 10 11 12 13 14

Week 3

15 16 17 18 19 20 21

Week 4

23 24 25 26 27 28

Chapter အနစချျုပ

▪ ဘယ်အဆ ခအဆေမာမ ဘယ်ဟာကိုလိုပ်မယ်ဆိုတာက selection or conditional statement

ြစ်ပါတယ်။ တစ်ကကမ်ပ အလိုပ်လိုပပ


် ါတယ်။

▪ တညီတ အလိုပ်ကို ထပ်ခါ ထပ်ခါ လိုပ်တာကို looping or iteration လိုို့ ဆခေါ်ပါတယ်။ looping

မာ while ေို့ for ဆိုပပီျိုး ဆရျိုးေည်ျိုး ၂ ေည်ျိုးရပါတယ်။ ဘယ်ဆရျိုးေည်ျိုး ြစ် ြစ် အပင
ို ်ျိုး ၃ ပင
ို ်ျိုးပါပါတယ်။

ဘယ်ကစမာလဆိုတ initialization ရယ်၊ ဘယ်အဆ ခအဆေထ လိုပ်မာလဆိုတ condition ရယ်၊

တစ်ကကမ်ပပီျိုးတိုင်ျိုး ဘာလိုပ်မာလဆိုတ update ရယ် ပ ြစ်ပါတယ်။ looping တစ်ခိုရျို့

106 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

အသက်ဟာ update လိုပ်တာ ြစ်တအတွေက် update မဆမြိုို့ အထျိုးအဆရျိုးကကီျိုးပါတယ်။ update

ဆမရင် ဘယ်ဆတာမ မရပ်ဆတာတ infinite loop ြစ်သွောျိုးနိုင်ပါတယ်။

▪ Selection ထ selection ပေ်ပါတာကို nested selection statement လိုို့ဆခေါ်ပပီျိုး၊ looping ထ

looping ပေ်ပါတာကို nested loop လိုို့ဆခေါ်ပါတယ်။

▪ Nested selection မာ အ ပင်က condition မေ်ပါမ အတွေင်ျိုးက condition ကို ထပ်စစ်ပါတယ်။

ေမော အဆေေို့ ဆိုရင်ဆတာ စာဆမျိုးပွေ ဆအာင် မင်မ D ဆပျိုးတာမ ျိုး ြစ်ပါတယ်။

▪ Nested loop မာ အ ပင် loop ကို outer loop လိုို့ဆခေါ်ပပီျိုး အတွေင်ျိုးထက ဆရျိုးတ loop ကို inner

loop လိုို့ ဆခေါ်ပါတယ်။ outer loop တစ်ကကမ်မာ inner loop ပပီျိုးဆအာင်လိုပ်ပါတယ်။ ဒါဆကကာင်

တစ်ကကမ်မာ အမ ာျိုးကကီျိုး လိုပ်တ ပံစ


ို ံဆိုရင် nested loop ေို့ ဆရျိုးပါတယ်။ တစ်ကကမ် လိုပ်တ

ဆကာင်က outer loop ြစ်ပပီျိုး၊ အမ ာျိုးကကီျိုး လိုပ်တ ဆကာင်ကဆတာ inner loop ြစ်ပါမယ်။

▪ Flowchart ကဆတာ ထင်သာ မင်သာဆအာင် ပံေ


ို ို့ ပတာ ြစ်ပပီျိုး Pseudocode တိုို့ algorithm

တို့လ
ို ိုပ programmer တင
ို ်ျိုး ောျိုးလည်ပါတယ်။

107 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

“တခ ျို့လဆတွေ ရတယ်ဆလ၊

ဗိုကက
် ဆာဆေပပီ ဘယ်နစ်ောရီမထိုျိုးဆသျိုးလိုို့ ထမင်ျိုး မစာျိုးဆသျိုးဘျိုးတ၊ိုို့

စေစ်ဇယာျိုးေို့ စာအိုပ်ကကီျိုးသမာျိုးဆတွေဆပါ။

တစ်ခခ
ို ိုဆို သတိုို့ သတ်မတ်ခ က်ဆတွေေို့ condition စစ်လမ
ိုို့ ပပီျိုးဆတာဘျိုး၊

အမျိုးသမာျိုးက မမျိုးတအခ ေ်ဆို လဆကာင်ျိုး

မျိုးတအခ ေ်မ ဆအာင်ထာျိုးသမျှ မဆက ေပ်ခ က်ဆတွေကို ထပ်ခါထပ်ခါ ဆ ပာရစ်ဆတာတာပ၊

Looping သပ်ကက က်တသဆတွေဆပါ”

108 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

အခန်း (၈)

Efficiency and Basic Algorithms

Efficiency of Algorithm

“A good algorithm is correct, but a great algorithm is both


correct and efficient.”

က ောင််းမွနတ
် ဲ့ algorithm တစ်ခုဟော မှန် န်မရ
ှု ှှိတယ်၊ ပှိပု ပ်းတ ယ်က ောင််းတဲ့ algorithm

မှနလ
် ည််းမှနတ
် ယ်၊ efficient လည််းဖြစ်တယ်။ Efficient ဖြစ်ြဆ
ှိုို့ ှိုရင် “minimum use of

resources” ဖြစ်ရပါမယ်။ time တှိုို့၊ memory spaceတှိုို့ စတဲ့ resourcesကတွ ှို အနည််းဆု်း

အသု်းဖပြုရမှော ဖြစ်ပါတယ်။

ဆှိုက ပါစှိုို့ သခ္ခောပုစောဆ တစ်ပုဒ် ှို က ခောင််းသော်းနှစ်ကယော ်တွ ်တယ်။ နှစ်ကယော ်လု်းဟော

မှနတ
် ယ်၊ ဒါကပမဲ့ တစ်ကယော ် 15 min နို့ ပပ်းပပ်းကတောဲ့ ခန်တစ်ကယော ် 25 min

က ောမှပပ်းတယ်။ ဘယ် ကလ်း performance က ောင််းသလ၊ ဖမန်သလဆှိုရင် အခခှိန်အနည််းဆု်း

(အခခှိန်တတ
ှို ှို အတွင််း) ပပ်းတဲ့ 15 min ပ က ောတဲ့ က ခောင််းသော်း ပှိဖု မန်တောကပါ ဲ့။ ဒါကက ောငဲ့် time

ယူတောနည််းကလ ဖမန်ကလ ဖြစ်ပါတယ်။

စော်းလှိုို့ က ောင််းတောခခင််းအတူတူ game တစ်ခု ကလ်းတယ်၊ memory မခော်းတဲ့ စ ်မောှ မှ

အလုပ်လုပတ
် ယ်၊ စ ်ကရ်းတယ်ကပါ ဲ့၊ ခန် game ကတောဲ့ စ ်သှိပမ
် ကရ်းဘူ်း၊ ကပါ ဲ့တယ်၊ memory

အမခော်းက ်း မရှှိတဲ့ စ ်မှောလ စော်းလှိုို့ရတယ် ဆှိုရင် ဘယ်တစ်ခု ပှိက


ု ောင််းသလ။ ရှင််းကနတော ပါပ။

memory နည််းနည််းနို့ စ ်ကတော်ကတော်မခော်းမခော်းမှော စော်းလှိုို့ရတဲ့ ဒုတယ


ှိ game ပှိက
ု ောင််းတောကပါ ဲ့။

109 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

ဒါကက ောငဲ့် memory အသု်းဖပြုမှု နည််းကလကလ ကပါ ဲ့ကလကလ စ ်ကတော်ကတော်မခော်းမခော်းမှော

အလုပ်လုပက
် လ ဖြစ်ပါတယ်။

ဒါကက ောငဲ့် algorithm ကတွ ှို ဘယ် algorithm ပှိက


ု ောင််းသလ ဆှိုရင် 1. Correctness,

2. Time complexity, 3. Space complexity စသညဲ့် အခခ ် ၃ ခခ ်ဖြငဲ့် နှိုင််းယှဉ်ကလဲ့ရှှိပါတယ်။

အဒထ မှ time complexity ှို တွ ်ခခ ်တဲ့အခါမှော တွ ်နည််း ၃ မခှိြု်းရှှိပါတယ်။

▪ Worst Case – Worst case ဆှိုတဲ့အတှိုင််း အဆှို်းဆု်းအကဖခအကနအတွ ် အမခော်းဆု်း ယူနှိုင်တဲ့

က ောခခှိန်(maximum time) ှို တှိင


ု ််းတောတောဖြစ်ပါတယ်။ Big O notation (O) နို့ ှိုယစ
် ော်းဖပြု

ပါတယ်။

▪ Average Case – Average case ဆှိုတဲ့အတှိုင််း အမခော်းဆု်းက ောခခှိန်နို့ အနည််းဆု်းက ောခခှိန်

တှိုို့ကပေါ်မှုတည်ပပ်း ပျှမ််းမျှက ောခခှိန် ှို တွ ်ခခ ်တောဖြစ်ပါတယ်။ Theta Notation (ɵ)

ကတောဲ့ average case အတွ ် အမခော်းဆု်း က ောခခှိန်နှငဲ့် အနည််းဆု်းက ောခခှိန် ှို

နှိုင််းယှဉ်ဖပြှိအ
ုို့ တွ ် သု်းပါတယ်။

▪ Best Case – Worst case နို့ ဆနို့် ခင်ဘ ် အနည််းဆု်းက ောမညဲ့်အခခှိန် ှို တှိင
ု ််းတော တော

ဖြစ်ပါတယ်။ Omega Notation (Ω) နို့ ှိုယစ


် ော်းဖပြုပါတယ်။

Prime Number

အလွယ်ကဖပောရမယ်ဆှိုရင်ကတောဲ့ မှိမှိ ှိုယတ


် င
ှို ် နှငဲ့် ၁ လွပပ်း တစ်ဖခော်း ှိန််းဖြငဲ့် စော်းလှိုို့

မဖပတ်ကသော ှိန််း ှို Prime Number (သုဒဓ ှိန််း) လှိုို့ ကခေါ်ပါတယ်။ Prime Number ဟာ 2

ကနနစပါတယ။ ၁ နတာော့ ကိန်းဂဏန်းတိိုင်းကိို စာ်းပပတနနတာပြစတော့အတွက ထညော့ပပ်း

မနပပာနတာော့ပါဘ်း။ ဒနတာော့ ဂဏန်း တစလို်းဟာ prime number ဟိုတမဟိုတ သိချငရင 2 နန စပပ်း

110 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

စာ်းကကညော့ရပါ ော့မယ။ ပပတသည အထိ စာ်းကကညော့ပါမယ။ စာ်းလိိုို့ ပပတသွာ်းတော့ အချိနမှ စာ်းတော့ဂဏန်း နို့

အစာ်းခရတော့ ဂဏန်းတတယ ဆိိုရင မိမိကိိုယတိင


ို နို့သာ စာ်းပပတတာပြစလိိုို့ prime number ပြစပပ်း၊

စာ်းတော့ဂဏန်း နို့ အစာ်းခရတော့ဂဏန်း မတဘ်းဆိိုရင တစပခာ်းကိန်းဂဏန်းနို့ စာ်းပပတတာပြစလိိုို့

prime number မဟိုတပါဘ်း။

ဥပမော 5 ှို prime number ဟုတမ


် ဟုတ် စစ်က ညဲ့်မယ် ဆှိုရင် 2 ကန စပပ်း စော်းက ညဲ့်တယ်

မဖပတ်ဘူ်း၊ ဒကတောဲ့ စော်းတဲ့ ှိန််း ှို 1 တှိ်းု ပပ်းစော်းက ညဲ့်မယ်။ 3 နို့ ထပ်ပပ်းစော်းက ညဲ့်တယ် မဖပတ်ဘူ်း၊ 4

နို့ စော်းက ညဲ့်တယ် မဖပတ်ဘူ်း၊ 5 နို့ စော်းက ညဲ့်တယ်တယ်၊ ဖပတ်တယ်၊ စော်းဖပတ်တဲ့အတွ ်

အစော်းခရတ ှိန််း နို့ စော်းတဲ့ ှိန််း နှစ်ခု ှို တှို ်က ညဲ့်လှို ်ကတောဲ့ 5 ခခည််း ဖြစ်ကနတဲ့အတွ ်

တူကနတယ်။ ဒကတောဲ့ မှိမှိ ှိုယတ


် င
ှို ်နပ
ို့ စော်းဖပတ်တောဖြစ်တအ
ဲ့ တွ ် 5 သည် prime number

ဖြစ်တယ်။

8 ှို prime number ဟုတ်မဟုတ် စစ်က ညဲ့်မယ်ဆှိုရင် 2 ဖြငဲ့် စပပ်း စော်းက ညဲ့်ပါမယ်၊ စော်းလှိုို့

ဖပတ်တဲ့အတွ ် အစော်းခရတဲ့ ှိန််းနှငဲ့် စော်းတဲ့ ှိန််း ှို တှို ်က ညဲ့်တဲ့အခါ 8 ရယ် 2 ရယ် ဆှိုကတောဲ့

မတူပါ။ ဒကတောဲ့ တစ်ဖခော်း ှိန််းဖြငဲ့် စော်းဖပတ်ကနတောဖြစ်လှိုို့ 8 သည် prime number မဟုတပ


် ါ။

Algorithm: Prime Number1

1. isPrime(num)
2. If num<=1 then:
3. Return false
4. d=2
5. Repeat while (num mod d) != 0:
6. d = d+1
7. End of loop
8. If num == d then:
9. Return true

111 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

10. Else:
11. Return false

Trace လှို ်မဖပခင် Algorithm ှို နည််းနည််းကလော ် အရင် ရှင််းဖပပါမယ်။ Prime number

ဟုတမ
် ဟုတ် user စစ်ခခင်တဲ့ ှိန််း ှို num ဆှိုပပ်း parameter လ ်ခလှို ်ပါတယ်။

ယိုကကညစိတချရမှုကိို ရရှိြို့ိိုဆိိုရင algorithm တစခိုဟာ ပြစနိင


ို တော့ အမှာ်းနတွကိို ကကိြိုတင

စစနဆ်းပပ်းကာကွယ ထာ်းနပ်းြိို့ိုလိိုပါတယ။ ဥပမော အသ ်ဆှိုရင် ဂဏန််းမှန်ကပမဲ့ ဂဏန််းတှိင


ု ််း

မမှန်ပါဘူ်း။ အနုတ်တ၊ှိုို့ 1000 တှိို့ဆ


ု ှို မှော်းပါတယ်။ ဒါကတွ ှို ကသခခော စစ်ထုတ်ြို့လ
ှို ှိုပါတယ်။ မဟုတ်ပ

ဘောရှို ်ရှို ် လ ်ခကနတယ်ဆှိုရင်ကတောဲ့ အသု်းဖပြုတဲ့ user ဟော ဘယ်လှိုမှ ယုက ည်မှုရှှိမှော

မဟုတပ
် ါဘူ်း။ ဒါ input error ှိုနမူနနာကဖပောဖပတောပါ။ တွ ်လှို ်မှ error တပ်တယ်၊

အကဖြထွ ်မလောဘူ်းတှိို့ု ဆှိုရင်လည််း user ယုက ည်မှုရှှိမှော မဟုတ်ပါဘူ်း။ ဒါကက ောငဲ့်

အဒအရောကတွ ှိုလည််း ော ွယ်ထော်းြှိို့ု လှိုပါတယ်။

ဒကနရောမှော prime number သည် 2 စတယ်။ 2 ထ ်ငယ်တဲ့ဂဏန််းမှန်သမျှဟော prime

number မဟုတဘ
် ူ်း။ အဒါကလ်း ှို function စစခခင််း တည််း စစ်ထော်းကပ်းတယ်။ ဒကတောဲ့ 2

ကအော ်ငယ်တောကတွ ထညဲ့်ခဲ့ရင် တန််းပပ်း false return ဖပန်မှောကက ောငဲ့် ကအော ် အလုပ်ကတွ

ဆ ်ပပ်းလုပစ
် ရောမလှိုကတောဲ့ပါဘူ်း။ return ပပနတယဆိိုတာ function ထကနနထွက၊ လှမ်းနခေါ်တော့

နနရာ(function call) ကိသ


ို ွာ်းပပ်း အနပြပပနနပ်းတာပြစပါတယ််။ ဒါကက ောငဲ့် false return

ဖပန်လှို ်တောနို့ function ထ ကန ထွ ်သွော်းမှော ဖြစ်လှိုို့ ကအော ် looping ှို ဆ ်မလုပ်ကတောဲ့

တော ဖြစ်ပါတယ်။ ပပ်းကတောဲ့ ဒကနရောမှော 2 ထ ်ငယ်သလော်း စစ်တဲ့ conditional or selection

statement သောမပါခဲ့ရင် infinite loop ဖြစ်သွော်းမှောပါ။ ဥပမော ဝင်လောတော 1 ဆှိုပါကတောဲ့။ num

တန်ြှို်း 1 ဖြစ်မယ်။ If num<=1 then: ဆှိုပပ်းစစ်ထော်းတဲ့ selectionသော မပါခဲ့ဘူ်းဆှိုရင် d=2 ဆှိုပပ်း

112 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

looping ှို အလုပ်လုပမ


် ှော ဖြစ်ပါတယ်။ 2 ကန စပပ်း မဖပတ်မခခင််းစော်းမယ်။ 1 ှို 2 နို့ စော်းမဖပတ်ဘူ်း၊

ဒကတောဲ့ d ှို 1 တှိ်းု ပပ်း 3 နို့စော်းတယ် မဖပတ်ဘူ်း၊ ဒလှိုနို့ တှိ်းု သွော်းလှို ်တော 1 ှို

သူူ့ထ ်က ်းတောကတွနို့ခခည််း သွော်းသွော်း စော်းကနကတောဲ့ ဘောနို့မှ စော်းလှိုို့မဖပတ်ဘူ်း။ ဒကတောဲ့ စော်းဖပတ်မှ

ရပ်မှောဖြစ်တဲ့ looping မရပ်ကတောဲ့ပ infinite loop ဖြစ်သွော်းမှော ဖြစ်ပါတယ်။ ဒနတာော့ algorithm

တစခိုဟာ ယိုကကညစိတချရြိို့ို ဆိိုရင ပြစနိင


ို တော့ error နတွအာ်းလို်း စစထာ်းနပ်းြိိုို့ ကာကွယထာ်းြိိုို့

လိိုပါတယ။

Selection စစ်ထော်းတော ှို နာ်းလည်ကလော ်ပပဆှိုကတောဲ့ ကအော ် line 4 ကန

ဆ ်ပပ်းရှင််းပါ ဲ့မယ်။ ဝင်လောတဲ့ num ှို 2 ကန စပပ်းစော်းမှော ဖြစ်တဲ့ အတွ ် စော်းြှိို့အ


ု တွ ်

အသု်းဖပြုမညဲ့် variable d ထ ှို 2 လှို ်ပါတယ်။ အဒါဟော initialization ပါ။

ပပ်းတောနို့ မဖပတ်မခခင််း ထပ်ခါ ထပ်ခါ စော်းမှော ဖြစ်တဲ့အတွ ် looping ပတ်ပါတယ်၊ ဘယ်အထှိလ

ဆှိုကတောဲ့ မဖပတ်မခခင််း (num ှို d ဖြငဲ့်စော်းတော အက ွင််း 0 နှငဲ့် မညမခခင််း) ပတ်ပါမယ်။ num mod d

!= 0 ဟော condition ဖြစ်ပါတယ်။ မဖပတ်ရင် စော်းတဲ့ d ှို 1 တှိ်းု တှို်းပပ်း စော်းမှောဖြစ်လှိုို့ d = d +1 ဆှိုတော

update ဖြစ်ပါတယ်။ ဒမှော စော်းလှိုို့ဖပတ်ကတောဲ့မှ prime ဟုတမ


် ဟုတ် စစ်ခခင်တောဖြစ်လှိုို့ မဖပတ်ရင်

ဘောမှ မလုပ်ခခင်တဲ့အတွ ် while looping ထမှော လုပ်ခခင်တဲ့ body မပါ ပါဘူ်း၊ update ပပါ ပါတယ်။

စော်းဖပတ်တောနို့ looping ထ ထွ ်ပါ ဲ့မယ်။

Looping ကန ထွ ်တဲ့ အခခှိန်မောှ အစော်းခရတဲ့ က ောင်နို့ စော်းတဲ့ က ောင်နို့ တူမတူ စစ်ပါတယ်၊

တူရင် prime number ဖြစ်တဲ့အတွ ် true return ဖပန်ပါ ဲ့မယ်။ မတူရင် prime number မဟုတလ
် ှိုို့

false return ဖပန်ပါ ဲ့မယ်။ ဒကလော ်ဆှို algorithm ှို နာ်းလည်ကလော ်ပပ ဖြစ်လှိုို့ trace

လှို ်က ရကအောင်။ ထု်းစအတှိင


ု ််း trace လှို ်မယ်ဆှို မှတ်စုစောအုပရ
် ယ်၊ ကရ်းစရောရယ် ယူထော်းပပ်း

တစ်ခါတည််း လှို ်လုပပ


် ါကနာ်။

113 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Ans = isPrime(0)

Line No num d အလိုပလိုပပို Result

1 0

2 num < 2 စစ်ကတောဲ့ 0<2 ဖြစ်လှိုို့ မှနပ


် ါတယ်။ ဒကတောဲ့ Return false

false return ဖပန်ပါ ဲ့မယ်။

Return ဖပန်လှို ်တဲ့ false ဟော function ထ ကနထွ ်ပပ်း function call ကခေါ်ထော်းတဲ့ ကနရော ှို

ဖပန်သွော်းပပ်း function call assign(=) လုပ်ထော်းတဲ့ Ans ထ ကရော ်သွော်းမှောဖြစ်ပါတယ်။

Ans = isPrime(5)

Line num D အလိုပလိုပပို Result

1 5

2 num < 2 စစ်ကတောဲ့ 5 < 2 ဖြစ်လှိုို့ မှော်းတယ်၊ ဒကတောဲ့ ကအော ်

return ှိုအလုပမ
် လုပ်ကတောဲ့ဘူ်း။

4 2 d=2

5 num mod d -> 5 mod 2 = 3 != 0 ဆှိုကတောဲ့မန


ှ ်တယ်၊

မှနက
် တောဲ့ line 6 ှို သွော်းမယ်။

6 3 d = d +1

7 End of loop ဆှိုကတောဲ့ condition ရှှိရော line 5

ှိုဖပန်တ ်မယ်။

114 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

5 num mod d -> 5 mod 3 = 2 != 0 ဆှိုကတောဲ့မန


ှ ်တယ်၊

မှနက
် တောဲ့ line 6 ှို သွော်းမယ်။

6 4 d = d +1

7 End of loop ဆှိုကတောဲ့ condition ရှှိရော line 5

ှိုဖပန်တ ်မယ်။

5 num mod d -> 5 mod 4 = 1 != 0 ဆှိုကတောဲ့မန


ှ ်တယ်၊

မှနက
် တောဲ့ line 6 ှို သွော်းမယ်။

6 5 d = d +1

7 End of loop ဆှိုကတောဲ့ condition ရှှိရော line 5

ှိုဖပန်တ ်မယ်။

5 num mod d -> 5 mod 3 = 0 != 0

0 != 0 ဆှိုကတောဲ့မောှ ်းတယ်၊ looping ကနထွ ်မယ် ဆှိုကတောဲ့

end of loop အဖပင်ဘ ် line 8 ှိုသွော်းမယ်။

8 Num == d စစ်ကတောဲ့ 5 == 5 မှနတ


် အ
ဲ့ တွ ် return true ဆှိုပပ်း Return true

function ထွ ်ပပ်း call ထော်းတက


ဲ့ နရော ကရော ်မယ်။

Return ဖပန်လှို ်တဲ့ true ဟော function ထ ကနထွ ်ပပ်း function call ကခေါ်ထော်းတဲ့ ကနရော ှို

ဖပန်သွော်းပပ်း function call assign(=) လုပ်ထော်းတဲ့ Ans ထ ကရော ်သွော်းမှောဖြစ်ပါတယ်။

115 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Ans = isPrime(6)

Line num D အလိုပလိုပပို Result

1 5

2 num < 2 စစ်ကတောဲ့ 6 < 2 ဖြစ်လှိုို့ မှော်းတယ်၊ ဒကတောဲ့

ကအော ် return ှိုအလုပမ


် လုပ်ကတောဲ့ဘူ်း။

4 2 d=2

5 Num mod d -> 6 mod 2 = 0 != 0 မှော်းကတောဲ့ looping

ထ ထွ ်မောှ ဖြစ်လှိုို့ end of loop အဖပင်ဘ ် line 8

ှို သွော်းမယ်။

8 Num == d စစ်ကတောဲ့ 6 == 2 ဆှိုကတောဲ့ မှော်းတဲ့အတွ ် Return false

Else ှို သွော်းအလုပ်လုပက


် တောဲ့ return false ဆှိုပပ်း

function ထ ကန ထွ ်သွော်းမယ်။

Return ဖပန်လှို ်တဲ့ false ဟော function ထ ကနထွ ်ပပ်း function call ကခေါ်ထော်းတဲ့ ကနရော ှို

ဖပန်သွော်းပပ်း function call assign(=) လုပ်ထော်းတဲ့ Ans ထ ကရော ်သွော်းမှောဖြစ်ပါတယ်။

Prime number မှော 2 ထ ်ငယ်တောရယ်၊ 2 ထ ်က ်းပပ်း prime မဟုတတ


် ောရယ်၊ prime

ဟုတတ
် ောရယ်ဆှိုပပ်း case 3 ခုရှှိပါတယ်၊ ဒမှော ၃ ခုလု်း trace လှို ်ဖပထော်းပါတယ်။ Testing လိုပရင

case အာ်းလို်း cover ပြစနအာင စစနပ်းရပါတယ။ ဥပမာ ပမနမာစာနို့ ပတသကတာကိို

လိုပတယဆိိုရင ပမနမာစာ စာအိုပထက data နို့တင စစနဆ်းနပ်းလိိုို့မရပါဘ်း။ ပမနမာစာ

စာအိုပဆိိုတာ အနရ်းအသာ်း၊ အပြတအနတာက မှနကနပပ်းသာ်း ပြစပါတယ။ ဒါနကကာငော့

116 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

အနရ်းအသာ်းအပြတအနတာက မမှနတတတော့ Facebook နပေါ်က post နတွတိိုို့၊ messenger ထက

စာသာ်းနတွတိိုို့နို့ ပါ စစနဆ်းနပ်းြိို့ို လိိုပါတယ။

Algorithm: Prime Number (2)

1. isPrime(num)
2. If num<=1 then:
3. Return false
4. j=2
5. Repeat while j<[(num/2)+1] and (num mod j) != 0:
6. j=j+1
7. End of loop
8. If num mod j==0 then:
9. Return false
10. ELSE:
11. Return true

Prime Number ဟုတ၊် မဟုတ် စစ်တဲ့ algorithm ှို ကနာ ်တစ်မခှိြု်းဖြစ်ပါတယ်။

ွောဖခော်းခခ ်ကလ်း ကလဲ့လောက ညဲ့်က ရကအောင်ပါ။

စော်းြှိို့အ
ု တွ ် အသု်းဖပြုမညဲ့် variable name ှို j လှိုို့ကပ်းထော်းတယ်။ j ထ ်စောရင် အကပေါ်

algorithm မှောလှို divisor အတှိက


ု ခါ ် d လှိုို့ကပ်းတော ပှိက
ု ောင််းပါတယ်။ variable name ကိို

အဓိပပါယရှိတာ နပ်းတာဟာ ဒ variable ကနတာော့ ဘာအတွကဆိိုတာမျိြို်း အထ်းအနထွမှတသာ်းစရာ

နခါင်းထထညော့ထာ်းစရာ မလိိုတော့အတွက နကာင်းတော့ အနလော့အကျငော့တစခိုပြစပါတယ။ programmer

တိင
ို ်း လိိုကကိို လိိုကနာသငော့တော့ အနလော့အကျငော့နကာင်းနတွထက တစခို ပြစပါတယ။

အဓှိ ွောဖခော်းခခ ် ဘယ်ကနရောမှောလဆှိုရင် line number 5, while looping ရဲ့

condition စစ်ထော်းတက
ဲ့ နရောမှော ဖြစ်ပါတယ်။ Algorithm1 စော်းလှိုို့ မဖပတ်မခခင််း looping

117 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

ပတ်မယ်လှိုို့ စစ်ထော်းတယ်၊ Algorithm 2 စော်းမညဲ့် j တန်ြှို်းဟော ဝင်လောတဲ့ ှိန််းရဲ့ တစ်ဝ ်+၁

ထ ် ငယ်မယ် (တနည််းအော်းဖြငဲ့်ကဖပောရမယ်ဆှိုရင် ဝင်လောတဲ့ ှိန််းရဲ့ တစ်ဝ ် ှိန််းအထှိ

အလုပ်လုပမ
် ယ်)၊ စော်းလှိုို့လည််း မဖပတ်ဘူ်း ဆှိုတဲ့ အခခ ်နှစ်ခခ ် ှို စစ်ထော်းပါတယ်။ and ဖြငဲ့်

ဆ ်ထော်းလှိုို့ အဒ condition နှစ်ခထ


ု တစ်ခုမောှ ်းတောနို့ ထွ ်သွော်းမှော ဖြစ်ပါတယ်။ အဒ

အခခ ်နှစ်ခခ ်လု်း မှန်ကနသကရဲ့ ဆ ်ပပ်း looping ပတ်ကနမှော ဖြစ်ပါတယ်။

ကိန်းဂဏန်းတစခိုဟာ သရဲ့ တစဝကကိန်းနရာကသညအထိ စာ်းလိိုို့မပပတဘ်းဆိိုရင

နသချာနပါက အဒ ဂဏန်းဟာ သူ့ကိိုယသနို့ပ စာ်းပပတမှာပြစတယ၊ ဒါနကကာငော့ အဒကိန်းဟာ prime

number ပြစတယ ဆိိုတာရှိပါတယ။ ဒါကက ောငဲ့် ဒုတယ


ှိ algorithm ဟော အဒါ ုှိ

အသု်းခခထော်းတောဖြစ်လှိုို့ သူဟော အမခော်းဆု်း ဝင်လောတဲ့ ှိန််းရဲ့ တစ်ဝ ်ထှိ ပ တွ ်ခခ ်မောှ ဖြစ်လှိုို့

သူ အလုပ်လုပရ
် တဲ့ time သ ်သောမှော ကသခခောကပါ ်ပါပ။ အကပေါ်မှောကဖပောခဲ့တဲ့ time complexity

case ကတွနို့ ကဖပောမယ်ဆှိုရင်

▪ Best case: တစ်က ှိမတ


် ွ ်ရုနို့ အကဖြထွ ်တဲ့ 0(2 ထ ်ငယ်လှိုို့ if မှောတင်

တန််းပပ်းအကဖြထွ ်) နို့ 6(2 နို့ စပပ်း စော်းတောနို့ တန််းဖပတ်ပပ်း အကဖြထွ ်) လှိုမခှိြု်း

ှိန််းကတွအတွ ်ဆှိုရင် algorithm နှစ်ခုလု်းဟော ွောဖခော်းခခ ် သှိပ်မရှှိပါဘူ်း။ 6 လှို

looping တစ်က ှိမပ


် တ်ရတဲ့ အကဖခအကနမှော ဒုတှိယ algorithm ရဲ့ while မှော

condition 2 ခု ှို and နို့ ဆ ်ထော်းလှိုို့ ပထမ algorithm ရဲ့ while condition ထ ်

condition တစ်ခု ပှိပု ပ်း မဆှိုသကလော ် ပှိလ


ု ုပလ
် ှို ်ရတောကလ်းပ ရှှိပါတယ်။

▪ မှိမှိ ှိုယတ
် င
ှို ်နို့သော စော်းဖပတ်တဲ့ ှိန််းဂဏန််းကတွမှောကတောဲ့ ှိန််းဂဏန််းတန်ြု်းှိ

က ်းကလကလ algorithm နှစ်ခုရဲ့ ွောဖခော်းခခ ် က ်းကလကလ ဖြစ်ပါတယ်။ ဥပမော

997 ဆှိုရင် ပထမ algorithm 2 ကန 997 ထှိ စော်းက ညဲ့်မောှ ဖြစ်ပပ်း၊ ဒုတှိယ

algorithm ကတောဲ့ 997 ရဲ့ တစ်ဝ ် 498 ထှိပ တွ ်မှောမှိုို့ တစ်ဝ ်တတ
ှိ ှိ တွ ်ရတော

118 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

သ ်သောပါတယ်။ အခခှိန် ုန်မှု time တစ်ဝ ်တတ


ှိ ှိ သ ်သောတယ်လှိုို့

ကဖပောလှိုို့ရပါတယ်။ ဒါနကကာငော့ worst case မှာ ဒိုတိယ algorithm က ပိပို ပ်း

နကာင်းတာ သိသာထငရှာ်းတာပြစပါတယ။

Algorithm တစခိုနို့ တစခို complexity နတွကိို နိိုင်းယှဉကကတော့ အခါမှာ best case ထက

worst case မှာ တန်းပပ်း သိသိသာသာ အနပြနပေါ်နလော့ရှိပါတယ။ ဒါနကကာငော့ algorithm နတွကိို worst

case နို့ နိိုင်းယှဉနလော့ ရှိကကပါတယ။

နနာကပပ်း ဒမှာ algorithm2 က ပိပို ပ်း နကာင်းတယဆိိုတာ သဟာ ဝငလာတော့ ကိန်းရဲ့

တစဝကကိန်းအထိ စာ်းကကညော့လိိုို့မှ မပပတရင ဝငလာတော့ ကိန်းဟာ prime number ပြစတယဆိိုတော့

အချက တနည်းအာ်းပြငော့ သနရ်းသာ်းရမညော့ prime number အနကကာင်းကိို ပိသ


ို ိလိိုို့ပြစပါတယ။

ဒါနကကာငော့ programmer တစနယာကဟာ code မနရ်းသာ်းခင မိမိနရ်းသာ်းနပ်းမညော့

အနကကာင်းအရာကိို အချိနယပပ်း နကာင်းစွာသိနအာင ကကိြို်းစာ်းြိို့ိုလိိုပါတယ။ နကာင်းနကာင်းသိနလ

နကာင်းတော့ code တစခို ထွကနလ ပြစပါမယ။

အတိန
ို ရ်းနည်း

If num == d then: Return num==d


Return true
Else:
Return false

အကပေါ် ဇယော်းမှော ဖပထော်းတဲ့ ၂ ခု ဟော အတူတူပဖြစ်ပါတယ်။ ပထမ တစ်ခု ှိုကတောဲ့ ရှင််းဖပပပ်းသော်း

နာ်းလည်ပပ်းသော်း ဖြစ်ပါလှိမမ
ဲ့် ယ်၊ Return num==d ဆှိုတဲ့ ဒုတယ
ှိ တစ်ခုပ ှို ရှင််းဖပပါမယ်။

119 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

▪ num တန်ြှို်းဟော 6 ဆှိုရင် d တန်ြှို်း 2 နို့ တင် စော်းဖပတ်တယ်။ ဒကတောဲ့ return 6==2 ဆှိုပပ်း

ဖြစ်မယ်၊ 6==2 မညကတောဲ့ false ဖြစ်ကတောဲ့ return false ဖြစ်သွော်းတယ်။

▪ num တန်ြှို်းဟော 5 ဆှိုရင် d တန်ြှို်း 5 နို့ စော်းမှ ဖပတ်ကတောဲ့ return 5==5 ဆှိုပပ်း ဖြစ်မယ်၊ 5==5

ညကတောဲ့ true ဖြစ်ကတောဲ့ return true ဖြစ်သွော်းတယ်။

ဒကတောဲ့ အစော်းခရတဲ့ က ောင်နို့ စော်းတက


ဲ့ ောင်နို့ တူရင် return true၊ မတူရင် return false ဆှိုပပ်း

အလုပ်လုပသ
် ွော်းတောဖြစ်လှိုို့ အလုပ်လုပ် ပု အတူတူပ ဆှိုတော သကဘောကပါ က
် လော ်ပါပပ။

အလုပ်လုပပ
် တ
ု ူရင် အတှိုကရ်းနည််း ကရ်းရတော သ ်သောတယ်၊ မှို ်တယ်။ Code complexity

ကလခောဲ့တယ်။ ဒါကက ောငဲ့် မခော်းမခော်းလုပ်ရင် အကလဲ့အ ခငဲ့် ဖြစ်တယ် ဆှိုတဲ့အတှိင


ု ််း အကလဲ့ အ ခငဲ့်

ဖြစ်သွော်းရကအောင် အတှိက
ု ရ်းနည််းကလ်းကတွ ှို တခုတ်တရ ကရ်းြှိို့လ
ု ှိုပါတယ်။

ပြစနိိုငသမျှ Error နတွကိို စစထာ်းနပ်းမယ။

ဖြစ်နင
ှို ်သမျှ တပ်လောနှိုင်တဲ့ error ဆှိုတော ှို ဖမင်သောထင်သော ရှှိကအောင် 𝑎𝑥 2 + 𝑏𝑥 + 𝑐 = 0

ဆှိုတဲ့ quadratic equation ှို စဉ််းစော်းက ညဲ့်က ရကအောင်ပါ။ အဒ equation ကန x တန်ြှို်း ုှိ

တွ ်ခခင်ရင်

−𝑏 ± √𝑏 2 − 4𝑎𝑐
𝑥=
2𝑎

ဆှိုပပ်း တွ ်ရပါတယ်။ အဒမှော √𝑏 2 − 4𝑎𝑐 ဆှိုတောကလ်းသတှိထော်းရပါမယ်။ square root (ထပ် ှိန််း

1/2) ထမှော အနှုတ်ဖြစ်လမ


ှိုို့ ရတော ကရှဲ့မောှ ကဖပောခဲ့ပပ်းပါပပ။ 𝑏 2 − 4𝑎𝑐 အနှုတ်ထွ ်ကနရင် square

root ရှောလှို ်တဲ့အခခှိန် error တပ်မောှ ဖြစ်ပါတယ်။ ဒါကက ောငဲ့် 𝑏 2 − 4𝑎𝑐 ှို အရင်တွ ်ပပ်း condition

စစ်ကပ်းရမှော ဖြစ်ပါတယ်။ 𝑏 2 − 4𝑎𝑐 တန်ြှို်းဟော

120 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

1. အနှုတ်ဖြစ်ခရ
ဲ့ င် အကဖြမရှှိတဲ့ no solution ပုစောဆ ဖြစ်ပါတယ်။

2. 0 ထွ ်ခဲ့ရင် 0 ှို square root ရှောရင် 0 ပထွ ်မောှ ဖြစ်လှိုို့ ± တွ ်စရောမလှိုကတောဲ့ပ -b/2a

ဆှိုပပ်း အကဖြတစ်ခုပထွ ်မှော ဖြစ်ပါတယ်။

−𝑏+အကဖြ −𝑏− အကဖြ


3. >0 ဆှိုရင်ကတောဲ့ square root ရှောပါ ဲ့မယ်။ ပပ်းမှ 𝑥 = ရယ်၊ 𝑥 = ဆှိုပပ်း
2𝑎 2𝑎

အကဖြနှစ်ခု ထုတ်ဖပရမှောဖြစ်ပါတယ်။

quadraticEquation( a, b, c)

1. Set Temp = b * b – 4 * a * c
2. If Temp < 0 then:
3. Write “No Solution”
4. Else if Temp == 0 then:
5. Set ans = -b /(2*a)
6. Write “One Solution :”, ans
7. Else:
8. Temp = sqrt (Temp)
9. Ans1 = (-b + Temp) / (2*a)
10. Ans2 = (-b – Temp)/ (2*a)
11. Write “Two Solutions :”, Ans1, “ and “, Ans2

ဒလှို ကရ်းလှို ်ဖခင််းအော်းဖြငဲ့် 𝑏 2 − 4𝑎𝑐 တန်ြှို်း >0 ဖြစ်မှ square root ှို ရှောမှောဖြစ်တောကက ောငဲ့် 𝑏 2 −

4𝑎𝑐 အနှုတ်ထွ ်ခဲ့ရင် square root တွ ်စရောမလှိုကတောဲ့တော ဖြစ်လှိုို့ error တ ်စရော အကက ောင််း

မရှှိကတောဲ့ပါဘူ်း။ ပပ်းကတောဲ့ ဖြစ်နင


ှို ်တဲ့ အကဖခအကနအော်းလု်း ှို cover ဖြစ်ကအောင် စစ်ထော်းလှိုို့ one

solution, two solution ဆှိုပပ်း အကဖြရှင််းလင််းစွော ထွ ်မောှ ဖြစ်ပါတယ်။

121 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Summation Algorithm

User ထမှ ှိန််းဂဏန််း တစ်လု်းလ ်ခပါမယ်၊ အဒဂဏန််း ှို n ထ ထညဲ့်ပါမယ်။ ပပ်းရင် 1

ကန n ထှိ ကပါင််းလှိုို့ရတဲ့ အကဖြ ှို တွ ်မောှ ဖြစ်ပါတယ်။

Algorithm: Summation (1)

1. summation(num)
2. total = 0
3. n=1
4. Repeat while n < =num:
5. total = total +n
6. n=n+1
7. End of loop
8. return total

Trace အရင် လှို ်က ညဲ့်လှို ်ရကအောင်။ ထု်းစအတှိုင််း စောအုပရ


် ယ် ခတရယ် အသငဲ့်ဖပင်ထော်းပါ။

total = Summation (5)

Line num total n အလိုပလိုပပို

1 5

2 0 total = 0 (ကပါင််းမယ်ဆှိုရင် လောကပါင််းတဲ့ ဂဏန််းဖပန်ပပ်းရြှိို့ု

အကဖြသှိမ်း် မညဲ့် variable ထ ှို 0 initialize လုပ်ကပ်းထော်းတော

ဖြစ်ပါတယ်။ ကဖမော ်မယ်ဆှိုရင် လောကဖမော ်တဲ့ ဂဏန််း ဖပန်ရြှိုို့ 1

initialize လုပ်ကပ်းရပါတယ်။)

3 1 n=1

122 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

4 n <= num, 1<=5 မှနတ


် ယ်၊ မှနက
် တောဲ့ line 5 ှိုသွော်းမယ်

5 1 total = total + n, total = 0 +1, total =1

6 2 n = n+1 (update)

7 End of loop ဖြစ်တောကက ောငဲ့် line 4 condition ှို ဖပန်တ ်မယ်

4 n < =num, 2<=5 မှနတ


် ယ်၊ မှနက
် တောဲ့ line 5 ှိုသွော်းမယ်

5 3 total = total + n, total = 1 +2, total =3

6 3 n = n+1 (update)

7 End of loop ဖြစ်တောကက ောငဲ့် line 4 condition ှို ဖပန်တ ်မယ်

4 3 < =num, 3<=5 မှနတ


် ယ်၊ မှနက
် တောဲ့ line 5 ှိုသွော်းမယ်

5 6 total = total + n, total = 3 +3, total =6

6 4 n = n+1 (update)

7 End of loop ဖြစ်တောကက ောငဲ့် line 4 condition ှို ဖပန်တ ်မယ်

4 n <=num, 4<=5 မှနတ


် ယ်၊ မှနက
် တောဲ့ line 5 ှိုသွော်းမယ်

5 10 total = total + n, total = 6 +4, total =10

6 5 n = n+1 (update)

7 End of loop ဖြစ်တောကက ောငဲ့် line 4 condition ှို ဖပန်တ ်မယ်

4 n <= num, 1<=5 မှနတ


် ယ်၊ မှနက
် တောဲ့ line 5 ှိုသွော်းမယ်

5 15 total = total + n, total = 10 +5, total =15

6 6 n = n+1 (update)

7 End of loop ဖြစ်တောကက ောငဲ့် line 4 condition ှို ဖပန်တ ်မယ်

123 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

4 n <= num, 6<=5 မှော်းတယ်၊ မှော်းကတောဲ့ looping ထ ထွ ်မောှ ဖြစ်လှိုို့

looping အဖပင်ဘ ် line 8 ှိုသွော်းမယ်

8 Return total ဆှိုတဲ့အတွ ် return 15 ဖြစ်ပပ်း function ထ

ထွ ်ပပ်း call တဲ့ ကနရော ှို အကဖြဖပန်ပက


ှိုို့ ပ်းမှောဖြစ်ပါတယ်။

Return ဖပန်လှို ်တဲ့ တန်ြှို်းဟော call မှော ြမ််းထော်းတဲ့ total ထဝင်သွော်းမှော ဖြစ်ပါတယ်။ ဒမှော

လှမ််းကခေါ်တဲ့ကနရော ဂဏန််း 5 ထညဲ့်ကပ်းလှို ်လှိုို့ trace လှို ်တဲ့ ဇယော်းမှော 5 က ှိမ် loop

ပတ်သွော်းတော၊ 5 က ှိမတ
် ွ ်သွော်းရတော ဖြစ်ပါတယ်၊ 100 ထညဲ့်ရင် အက ှိမ် 100 loop ပတ်ပပ်း အက ှိမ်

100 တွ ်ရမှော ဖြစ်ပါတယ်။

Algorithm: Summation (2)

1. summation(num)
2. total = num * (num+1) /2
3. return total

total = summation(5)

Line Total Num အလုပ်လုပပ


် ု

1 5

2 total = num * (num+1) /1, total = 5* 6 /2 = 15

3 Return 15

ဘော looping မှ ပတ်စရောမလှိုပ line 2 တစ်ကက ောင််း တွ ်လှို ်တောနို့

အကဖြတန််းထွ ်သွော်းပါပပ။ ဒကတောဲ့ ဘယ် algorithm ဖမန်မလ run time သ ်သောမလ

အထူ်းကဖပောစရောမလှိုဘူ်းထင်ပါတယ်။ ဒါဟော သခ္ခော formula ှို အသု်းခခတဲ့ အ ခှိြု်းက ခ်းဇူ်းပါပ။

ဒါကက ောငဲ့် သခ္ခော formula ကတွ သှိြုို့ှိ လှိုအပ်တောပါ။

124 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

ကရှဲ့မောှ ကဖပောခဲ့တဲ့ worst case Big O notation (O) နို့ ကြေါ်ဖပရရင်

Summation(1) မှော

1. n=1
2. Repeat while n < =num:
3. total = total +n
4. n=n+1
5. End of loop

Looping ှို အဒလှို ကရ်းထော်းတအ


ဲ့ တွ ် n တန်ြှို်းသည် 1 ကနစတယ်၊ num အထှိ looping

ပတ်ပပ်းကပါင််းရတအ
ဲ့ တွ ်

num တန်ြှို်း 1 ဆှိုရင် => 1 က ှိမ် looping ပတ်

num တန်ြှို်း 2 ဆှိုရင် => 2 က ှိမ် looping ပတ်

num တန်ြှို်း 3 ဆှိုရင် => 3 က ှိမ် looping ပတ်

num တန်ြှို်း K ဆှိုရင် => K က ှိမ် looping ပတ်

num တန်ြှို်း n ဆှိုရင် => n က ှိမ် looping ပတ်

ဒါကက ောငဲ့် O(n) လှိုို့ ကဖပောလှိုို့ရပါတယ်။ Big O ဟော input တန်ြှို်း n အတွ ်ကရ်းကလဲ့ရှှိပါတယ်။

Summation 2 မှော ကတောဲ့

total = num * (num+1) /2

ဘောလောလော ဒတစ်ကက ောင််းပတွ ်တောဖြစ်လှိုို့ O(1) လှိုို့ ကဖပောလှိုို့ရပါတယ်။ num တန်ြှို်း 1 ဖြစ်လ

တစ်က ှိမပ
် တွ ်မယ်။ num တန်ြှို်း 2 ဖြစ်လ 1 က ှိမ်ပတွ ်မယ်ဆှိုတဲ့ အဓှိပပါယ်ဖြစ်ပါတယ်။ O(1)

ဆှိုတော input ဘောဖြစ်ဖြစ် constant time က ောတယ်လှိုို့ ဆှိုလှိုတောဖြစ်ပါတယ်။

125 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Factorial Algorithm

0! =1, 1! = 1, n! = n* (n-1) * …* 3 * 2 * 1 ဆှိုတော ကရှဲ့မောှ ရှင််းဖပခဲ့ပပ်း ဖြစ်ပါတယ်။ ဒကတောဲ့

factorial ရှောြှိို့အ
ု တွ ်ဆှိုရင် user ကပ်းတဲ့ ဂဏန််းဟော 0 နို့ အထ ် ဖြစ်ရပါမယ်။

Algorithm: Factorial

/*input number must be greater than or equal to 0*/

1. factorial(n)
2. If n<=1 then
3. Return 1
4. ans = 1
5. Repeat while n>0:
6. ans = ans * n
7. n=n-1
8. End of loop
9. return ans

Line 1 မှော /* နှငဲ့် */ အတွင််း ကရ်းတော ှို comment ကရ်းတောလှိုို့ကခေါ်တယ်။ comment ဟော

တွ ်တောခခ ်တော မဟုတ်ပါဘူ်း၊ algorithm အသု်းဖပြုမညဲ့်သူ ှို ကဖပောခခင်တဲ့ စ ော်း ှို

ကရ်းတောဖြစ်ပါတယ်။ Programmer တစ်ကယော ်ဟော ှိုယက


် ရ်းထော်းတဲ့ code ှို လှိုအပ်ခခ ်အရ

ကရ်းခဲ့ပပ်း နှစ်အကတော်က ောမှ ဖပန်ဖပင်ရတောမခှိြု်းလ ရှှိပါတယ်။ အဒအခခှိန် code ှိုဖပန်က ညဲ့်ရင်

ှိုယဘ
် ောကတွ ကရ်းထော်းခဲ့မှန််း မမှတမ
် ှိကတောဲ့ပါဘူ်း။ ဖပင်တောထ ် ှိုယ်ရ
ဲ့ ဲ့ code ှို နာ်းလည်ကအောင်

ဖပန်လုပရ
် တော အခခှိန်အကတော်ယူပါတယ်။ Code ှို စတင်ကရ်းသော်းခဲ့တဲ့ အခခှိန် သော comment

ကရ်းထော်းခဲ့ရင် comment ြတ်လှို ်ရုနို့ နာ်းလည်လွယ်တောမှိို့ု အော်းစှို ်ရ သ ်သောသွော်းမှော

ဖြစ်ပါတယ်။ ကနာ ်တစ်ခု ှိုယ် code ကရ်းခဲ့တယ်၊ ပပ်းကတောဲ့ အလုပ်ထွ ်သွော်းတယ်၊

ဖပင်ြလ
ုို့ှိ ှိုတယ်၊ ခန်ခတ
ဲ့ ဲ့ programmer ဖပင်ရကတောဲ့မောှ ဖြစ်ပါတယ်။ ှိုယ် သော comment

126 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

ကလ်းကတွ ကရ်းကပ်းခဲ့ရင် ဖပင်ရမညဲ့် programmer အတွ ် အကတော်ကလ်း သ ်သောကစမှောဖြစ်ပါတယ်။

ဒါနကကာငော့ comment နရ်းတာဟာ programmer နတွမှာ ရှိသငော့တော့အနလော့အကျငော့နကာင်းနတွထက

တစခိုပြစပါတယ။ ဒ algorithm မှောကတောဲ့ input သွင််းတဲ့ တန်ြှို်းဟော zero ထ ်က ်းပပ်း

ညရမယ်ဆှိုတော ှို အသှိကပ်းထော်းတောဖြစ်ပါတယ်။

Line 2 & 3 ကတောဲ့ user >=0 ှိုပ input သွင််းြှိို့ု ကဖပောထော်းတောဖြစ်လ၊ှိုို့ n<=1 ဆှိုတော 0! နို့ 1!

အတွ ် 1 return ဖပန်ကပ်းြှိို့ု ကရ်းသော်းထော်းတောဖြစ်ပါတယ်။

Line 4 ကတောဲ့ ကဖမော ်ရင် ကဖမော ်တဲ့ တန်ြှို်းရကစြှိို့ု အကဖြထညဲ့မ


် ညဲ့် ans ထ ှို 1 initialize

လုပ်ထော်းတော ဖြစ်ပါတယ်။ initialize လုပ်တယ် ဆှိုတော ထညဲ့်တော ုှိ ကဖပောတောပါ။

Looping ကတောဲ့ n ကန 1 အထှိ၊ 1 ကလျှောဲ့ကလျှောဲ့ ပပ်း ကဖမော ်သွော်းတော ဖြစ်ပါတယ်။

ကဖမော ်လှိရ
ုို့ တဲ့ အကဖြ ှို ans ထ ထညဲ့်ပါတယ်။ တ ယ် n ကန 2 အထှိပ loop ပတ်ရင်ကတောင်

ရပါတယ်။ ဘောလှိုို့လဆှိုရင် 1 ထှိ loop ပတ်ထော်းပပ်း 1 နို့ ကဖမော ်တော အကဖြ ှို

မကဖပောင််းလကစတအ
ဲ့ တွ ်ကက ောငဲ့် ဖြစ်ပါတယ်။

Line 9 ကတောဲ့ looping ပပ်းသွော်းတဲ့ အခခှိန်မောှ အကဖြ ans ှို return ဖပန်ကပ်းတော ဖြစ်ပါတယ်။

ဒတစ်ခါ trace လှို ်ရမှော ကတောဲ့ စောြတ်ကနတဲ့သူရဲ့ အလှညဲ့်ဖြစ်ပါတယ်။

result = factorial (0), result = factorial (1), result = factorial (5)

127 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Permutation

Algorithm: Permutation

/*n must be greater than or equal to r*/

1. permutation(n,r)
2. If n<r then
3. Return 0
4. ans = factorial (n)/factorial (n-r)
5. return ans

အကပေါ်မှော ကရ်းခဲ့တဲ့ factorial function ှို လှမ််းကခေါ်ပပ်း တွ ်ထော်းတောဖြစ်ပါတယ်။ ဒမှောကတောဲ့

line 4 ကလ်းပ ရှင််းစရောလှိုမယ် ထင်ပါတယ်။ factorial(n) ဆှိုပပ်း လှမ််းကခေါ်လှို ်ကတောဲ့ factorial

function parameter ထ ှို n တန်ြ်းှို ဝင်သွော်းပပ်းကတောဲ့ factorial function return

ဖပန်ကပ်းလှို ်တဲ့ n! ရဲ့ အကဖြ အဒလှမ်း် ကခေါ်တဲ့ကနရော ဝင်လောမှောဖြစ်ပါတယ်။ factorial(n - r) ဆှိုပပ်း

လှမ််းကခေါ်လှို ်ကတောဲ့ factorial function parameter ထ ှို n-r ဝင်သွော်းပပ်းကတောဲ့ factorial

function return ဖပန်ကပ်းလှို ်တဲ့ n-r! ရဲ့ အကဖြ အဒလှမ််းကခေါ်တဲ့ကနရော ဝင်လောမှောဖြစ်ပါတယ်။

အဒမှောမှ ဝင်လောတဲ့ တန်ြှို်း ၂ ခု ှို စော်းပပ်း ရလောတဲ့ အကဖြ ှို ans ထ ထညဲ့်လှို ်တောဖြစ်ပါတယ်။

ဒကလော ်ဆှို function ကတွ အခခင််းခခင််းလှမ််းကခေါ်သု်းလှိုို့ရတောလ သကဘောကပါ ်ကလော ် ပါတယ်။

function ခွနရ်းတာကိိုက ကကိြိုကတော့ နနရာကနန နခေါ်သို်းလိိုို့ ရြိို့ို ပြစပါတယ။

ဒတစ်ခါ trace လှို ်ရမှော လည််း စောြတ်သူရဲ့ အလှညဲ့်ပ ဖြစ်ပါတယ်။ Trace လှို ်ြုို့ှိ မပခင််းပါနို့။

မခော်းမခော်း trace လှို ်ကလကလ မခော်းမခော်း ဖမင်လောကလကလ၊ မခော်းမခော်း နာ်းလည်လောကလကလ ဖြစ်မှော

ဖြစ်ပါတယ်။

128 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

result = permutation(2,3)

result = permutation(3,2)

result = permutation(3,3)

နလော့ကျငော့ကကညော့ကကရနအာငပါ။

1. 1 ကန 100 အတွင််းမှော ရှှိတဲ့ prime number ကတွ ှို output ထုတ်ဖပကပ်းပါ။ လုပ်မှော 1 ကန

100၊ သှိက
ုို့ သော် prime number သည် 2 စတောဖြစ်လှိုို့ 2 ကန 100 အထှိ looping

ပတ်မောှ ဖြစ်ပါတယ်။ 2 ကန 100 အတွင််း တစ်လု်းဝင်လောတောနို့ prime number ဖြစ်မဖြစ် စစ်ြို့ှို

2 ကနစပပ်း စော်းပါမယ်။ မဖပတ်မခခင််းစော်း ပါမယ်။ ဒကတောဲ့ ဂဏန််းတစ်လု်းဝင်လောတှိင


ု ််း 2

ကနစပပ်း ထပ်ခါထပ်ခါ စော်းတောလုပ်မှောဖြစ်တဲ့အတွ ်၊ တစ်လု်းခခင််းစဝင်လောမညဲ့် ဂဏန််း

ကတွသည် outer loop ဖြစ်ပပ်း ထပ်ခါထပ်ခါစော်းမှော inner loop ဖြစ်မှော ဖြစ်ပါတယ်။

2. quadraticEquation(1, -6, 9) ှို Trace လှို ်ဖပပါ။

3. quadraticEquation(1, -3, -10) ှို Trace လှို ်ဖပပါ။

4. quadraticEquation(1, 3, 6) ှို Trace လှို ်ဖပပါ။

129 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Chapter အနှစချြိုပ

▪ Algorithm တစ်ခုဟော မှန်လည််းမှနရ


် မယ်၊ ဖမန်လည််းဖမန်ရမယ်၊ ကပါ ဲ့လည််း ကပါ ဲ့ရပါမယ်။

▪ မှနတ
် ောဖခင််းတူခရ
ဲ့ င် ဖမန်သလော်း(time complexity) နို့ ကပါ ဲ့သလော်း (space complexity) ကတွနို့

နှိုင််းယှဉ်ကလဲ့ရှှိပါတယ်။

▪ Complexity တွ ်တဲ့ကနရောမှော worst case, average case နို့ best case ဆှိုပပ်း ၃ မခှိြု်းရှှိပါတယ်။

▪ worst case မှော ွဖပော်းတော သှိသောထင်ရှော်းတောဖြစ်လှိုို့ algorithm ကတွ ှို နှိုင််းယှဉ်ကတောဲ့မယ်

ဆှိုရင် worst case (big O) နို့ နှိုင််းယှဉ်ကလဲ့ရှှိပါတယ်။

▪ Trace မခော်းမခော်းလှို ်ကလ algorithm ှို နာ်းလည်ကလကလ၊ အလုပ်လုပပ


် က
ု တွ နာ်းလည်ကလကလ

ဖြစ်ပါတယ်။ “ ” ကတောင်မကရ်းတတ်ပ “ ော” ကရ်းြှိို့ုဆှိုတော မဖြစ်နင


ှို ်ပါဘူ်း။ ဒလှိုပါပ algorithm

ကတွ trace ကတောင်မလှို ်တတ်ဘူ်းဆှိုရင် ှိုယ် ှိုယ်တုင


ှိ ် code ကရ်းြှိို့ုမလွယ်ပါဘူ်း။ ဒါကက ောငဲ့်

စှိတ်ဝင်တစော်း စောအုပထ
် မှော ခခပပ်း trace လှို ်ပါ။

▪ အဓှိပပါယ်ရှှိတဲ့ variable name ကပ်းတော၊ comment ကရ်းတော၊ formula ကတွ ှို အသု်းခခ

တောကတွဟော programmer တစ်ကယော ်မောှ ရှှိသငဲ့်တဲ့ အရည်ခခင််းက ောင််းကတွ ဖြစ်ပါတယ်။

130 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

“ရှင််းကအောင်ကဖပောရရင်

Function ဆှိုတော ခပ်ကခခကခခရယ်

သူ လ
ှို ောမကခေါ်ရင် ဘယ်သူူ့မှ အြ ်မလုပ်ဘူ်း၊

တစ်ြ ် ကဟ်း ဆှိုပပ်း function call ကခေါ်လှို ရ


် င်ကတောဲ့

function call ကခေါ်တဲ့သူ ှို တစ်ခခ


ု ုနို့

Return ဖပန် (တုို့ဖပန်) တတ်တယ်”

131 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

အခန်း (၉)

Recursion

Recursion ဆိုတာ မမ function ထဲကနေပ ြီး မမကို မမ ပ ေ်ပ ြီး function call

န ေါ်တာပြစ် ါတယ်။ recursion ဆိုတာ ဘာနဲ့ တူသလ ဆိုရင looping နဲ့တူပါတယ။ looping ရဲ့

အစာ်း သို်းတာဖြစပါတယ။ Recursion မာ အရရ်းက ်းဆို်း သတထာ်းရမည အချ ရတာ exit

point ရတွေ ထာ်းရပ်းရပါတယ။ ထာ်းမရပ်းရင infinite loop သရဘာမျ ်း မရပရတာပ

အလိုပလိုပရနမာ ဖြစလိုဲ့ အရဖြထွေ လာမာ မဟိုတပါဘူ်း။

Factorial

n! = n * (n-1)!

အဲဒမာဆိုရင် n factorial ကနေ n-1 factorial ကို ပ ေ်န ေါ်ထာြီးတာပြစ် ါတယ်။ factorial

ထဲကနေ factorial ကို ပ ေ်န ေါ်တာပြစ်လိုို့ recursion ပြစ် ါတယ်။

Algorithm: Factorial

1. factorial(n)
2. If n<=1 then:
3. Return 1
4. Else:
5. Return (n * factorial(n-1))

ဒ algorithm မာ line 5 က recursion ပြစ် ါတယ်။ return statement ထဲမာ factorial (n-

1) ဆိုပ ြီး မမ function ကို မမ ပ ေ်န ေါ်ထာြီးလိုို့ ပြစ် ါတယ်။

132 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Exit point ကနတာော့ 0! ေဲို့ 1! အတွက် loop တ်စရာမလို ဲ အနပြ 1 ကို return ပ ေ်န ြီးြို့ို

နရြီးထာြီးတဲော့ line 2 ေဲို့ 3 ဲ ပြစ် ါတယ်။ Trace လိုက်ပ လိုက်ရင် သန ာန ါက်သွာြီးမာ ါ။

f = factorial (5)

Line n အလိုပလိုပပို Result

1 5

2 n<=1 → 5<=1 ဆိုနတာော့မာြီးတယ်၊ မာြီးနတာော့ false ထွက်နတာော့ else Return 5*

ရဲဲ့ return n* factorial (n-1) ကို အလို ်လို မ


် ယ်။ return 5 * factorial (4)

factorial(4) ဆိုပ ြီး ပြစ်မယ်။ factorial (4) ဆိုတာ function call

ပြစ်တဲော့အတွက် function အစ line 1 ကို သွာြီးအလို ်လို မ


် ယ်။

Result မာ ပ ထာြီးသလို 5 * factorial(4) လိုို့ရမယ်။

1 4 Factorial (4) လိုို့ န ေါ်တာပြစ်လိုို့ n ထဲကို 4 ဝင်သွာြီးမယ်။

2 n<=1 → 4<=1 ဆိုနတာော့မာြီးတယ်၊ မာြီးနတာော့ false ထွက်နတာော့ else Return 5 * 4*

ရဲဲ့ return n* factorial (n-1) ကို အလို ်လို မ


် ယ်။ return 4 * factorial(3)

factorial(3) ဆိုပ ြီး ပြစ်မယ်။ factorial (3) ဆိုတာ function call

ပြစ်တဲော့အတွက် function အစ line 1 ကို သွာြီးအလို ်လို မ


် ယ်။

Result မာ ပ ထာြီးသလို factorial(4) နေရာမာ 4 * factorial(3)

ဆိုပ ြီး အစာြီးထိုြီးသွာြီးမယ်။

1 3 Factorial (3) လိုို့ န ေါ်တာပြစ်လိုို့ n ထဲကို 3 ဝင်သွာြီးမယ်။

2 n<=1 → 3<=1 ဆိုနတာော့မာြီးတယ်၊ မာြီးနတာော့ false ထွက်နတာော့ else Return 5 * 4 *

ရဲဲ့ return n* factorial (n-1) ကို အလို ်လို မ


် ယ်။ return 3 *

133 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

factorial(2) ဆိုပ ြီး ပြစ်မယ်။ factorial (2) ဆိုတာ function call 3*

ပြစ်တဲော့အတွက် function အစ line 1 ကို သွာြီးအလို ်လို မ


် ယ်။ factorial(2)

Result မာ ပ ထာြီးသလို factorial(3) နေရာမာ 3 * factorial(2)

ဆိုပ ြီး အစာြီးထိုြီးသွာြီးမယ်။

1 2 Factorial (2) လိုို့ န ေါ်တာပြစ်လိုို့ n ထဲကို 2 ဝင်သွာြီးမယ်။

2 n<=1 → 2<=1 ဆိုနတာော့မာြီးတယ်၊ မာြီးနတာော့ false ထွက်နတာော့ else Return 5 * 4*

ရဲဲ့ return n* factorial (n-1) ကို အလို ်လို မ


် ယ်။ return 2 * 3 *

factorial(1) ဆိုပ ြီး ပြစ်မယ်။ factorial (2) ဆိုတာ function call 2 *

ပြစ်တဲော့အတွက် function အစ line 1 ကို သွာြီးအလို ်လို မ


် ယ်။ factorial(1)

Result မာ ပ ထာြီးသလို factorial(2) နေရာမာ 2 * factorial(1)

ဆိုပ ြီး အစာြီးထိုြီးသွာြီးမယ်။

1 1 Factorial (1) လိုို့ န ေါ်တာပြစ်လိုို့ n ထဲကို 1 ဝင်သွာြီးမယ်။

2 n<=1 → 1<=1 ဆိုနတာော့မေ်တယ်၊ မေ်နတာော့ true ထွက်နတာော့ else Return 5 * 4*

နအာက်က recursionကို မလို ်နတာော့ ဲ if ရဲဲ့ နအာက်က exit point 3* 2 * 1

ပြစ်တဲော့ return 1 ကို အလို ်လို သ


် ွာြီးမယ်။ ဒနတာော့ factorial(1)

နေရာမာ အနပြ 1 ဝင်သွာြီးမာ ပြစ်တယ်။ န ြီးက result column

ကို ကကညော့် ါ။

Exit point ကနေ ထွက်လာပ ြီး return 5*4*3*2*1 ဆိုနတာော့ return 120 ဆိုပ ြီး မူရင်ြီး

function call ဆ အနပြပ ေ် န


ိုို့ ြီးနတာော့ f ထဲကို 120 ဝင်သွာြီးမာ ပြစ် ါတယ်။

F = factorial (7)

134 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

F = factorial (0) တို့အ


ို တွက် trace လိုက်ကကညော့် ါ။

Triangle

Line 1
Line 2
Line 3

Line 4


ို လြီးက line 4 အထ ဲ ေမူော ဆွဲပ ထာြီးတာ ပြစ် ါတယ်။ Line 1 တစ်နကကာင်ြီးထဲဆိုရင်

အတြီးို နလြီး ၁ တိုြီးထဲ ပြစ် ါမယ်။ Line 2 ထ ဆိုရင် အတြီးို အနရအတွက်က 2 + 1 (line 2+ line 1)

ပြစ် ါမယ်။

Line အနရအတွက် 1 2 3 4

No of Rectangle: 1 2+1 3+2+1 4+3+2+1

triangle(1) = 1

triangle(2) = 2 + 1 = 2 + triangle(1)

triangle (3) = 3 + 2 + 1 = 3 + triangle(2)

triangle(n) = n + triangle (n-1) //recursion

135 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Algorithm: Triangle

1. triangle(l)
2. If l==1 then:
3. Return 1
4. Else:
5. Return (l + triangle(l-1))

ဒတစ် ါနတာော့ Trace ကို အတို ြီးပ ြီး လိုက်ပ ရင် သန ာန ါက်နလာက် ါပ ။

triangle (4) = 4 + triangle (3)

= 4 + 3 + triangle(2)

= 4 + 3 + 2 + triangle(1) = 4 + 3 + 2 + 1 = 10

ရလ ျငက ညက ရရအာင။

1. New Year Count down အတွက် recursion function နရြီး ါ။

n …. 5 4 3 2 1 Happy New Year

သန ာကနတာော့ n တေ်ြိုြီး input လက် ၊ ပ ြီးရင် n ကနေ စပ ြီး count down လို ်မယ်။ 0

နရာက်တာေဲို့ Happy New Year လိုို့ ထိုတ်မယ်။ ဒနတာော့ 0 ဟာ exit point ပြစ် ါမယ်။

နရြီးကကညော့် ါ။ နရြီးပ ြီး ဒတိုင်ြီးမထာြီး ဲ မေ်မမေ် trace ပ ေ်လိုက် ါနော်။

2. Power function ကို recursion နရြီး ါ။ Parameter 2 ို လက် ါမယ်။ b ေဲို့ p ပြစ် ါတယ်။

b က base ပြစ်ပ ြီး p က power ပြစ် ါတယ်။ မည်သညော့်ကေ်ြီးမဆို ထ ်ကေ်ြီး 0 တင်ရင် 1

ရ ါတယ်။ ေမူောနပ ာပ ရရင်

power(2,0) = 1
power(2 , 1) = 2
power(2, 2) = 2* 2 = 2 * power (2, 1)

136 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

power(2, 3) = 2* 2* 2 = 2* power(2,2)
3. နရဲ့က သ ္ ာအ ေ်ြီးမာ နပ ာ ဲော့တော့ဲ Fibonacci အတွက် recursion function နရြီး ါ။

User ထမ ၃ ို လက် ါမယ်။ ထမကေ်ြီးရယ်၊ ဒိုတယကေ်ြီးရယ်၊ ထိုတ်ပ င်တော့ဲ

အကကြီးဆိုြီးကေ်ြီးရယ် ဆိုပ ြီး လက် ါမယ်။ ေမူောနပ ာရရင် user က ထမကေ်ြီး 0,

ဒိုတယကေ်ြီး 1, အကကြီးဆိုြီးကေ်ြီး 20 လိုို့ ရိုက်ထညော့တ


် ယ်ဆို ါနတာော့။ ဒါဆို အနပြက

0 1 1 2 3 5 8 13

လိုို့ထွက်ရ ါ ော့မယ်။ 8+13 က 21 ဆိုနတာော့ အကကြီးဆိုြီးကေ်ြီး 20 ထက်ကကြီးနတာော့ မထိုတ်

နတာော့ ါ ူြီး။ Fibonacci န


ို သေည်ြီးက Fn = Fn-1 + Fn-2 ပြစ် ါတယ်။ မမတ်မရင် ပ ေ်ရာြတ် ါ။

နရြီးပ ြီး ဒတင


ို ်ြီးမထာြီး ဲ မေ်မမေ် trace ပ ေ်လိုက် ါနော်။

Chapter အနစချ ပ

▪ Recursion ဆိုတာ looping အစာြီး သိုြီးတာပြစ် ါတယ်။

▪ Exit point သာ နသနသ ာ ာ ထညော့်မနရြီး ဲော့ရင် infinite loop ပြစ်သွာြီးနိုင် ါတယ်။

▪ Function တစ် ို လမ်ြီးန ေါ်လိုက်ရင် memory န ေါ်မာ နေရာယူပ ြီးနတာော့၊ function ထဲက နေ

return ပ ေ်တာမ ြီးပြစ်ပြစ်၊ အလို ်လို လ


် ိုို့ ပ ြီးသွာြီးတာမ ြီးပြစ်ပြစ် အပ ြီး ထွက်သွာြီးမသာ အဲဒ

functionအတွက် နေရာယူထာြီးတာနတွကို ြ က် စ်တာ ပြစ် ါတယ်။ Recursion ဟာ ထမ call

ထာြီးတာ မပ ြီး င်၊ အနပြမထွက်နသြီး င် အဲဒ call အတွက် အနပြထွက်ြို မမ function ကို မမ

ထ ် ါ ထ ် ါ ပ ေ်ပ ေ်န ေါ်နေရတဲော့အတွက် memory နေရာ စ


ို ာြီး ါတယ်။ space complexity


ို ာြီး ါတယ်။

▪ Code ကိုကကညော့်လိုက်ရင် နတာ်နတာ်နလြီး ရင်ြီးလင်ြီးနေတာပြစ်လိုို့ Code complexity(code ရဲဲ့

ရှု န
် ထွြီးမှုကနတာော့) ေည်ြီး ါတယ်။

137 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

“တ ဲ့လန
ူ တွ

ရစ်ကလည်ြီး ရစ် င်တယ်၊ ရစ်ြရ


ိုို့ ာလဲ စတ်မရည် ူြီး။

‘နပ ာပ ေ်ရင် ဟန
ို ေို့က စကာြီးထ ်နပ ာရအိုြီးမယ်’

ရစ်တာနတာင် ဟန
ို ေို့က နပ ာ တ
ဲော့ ဲော့စကာြီးကို

Recursion န ေါ်ပ ြီး ရစ်တာ”

138 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

အခန်း (၁၀)

Data မ ်းသိမ်းဆည်းပုံ

Data သိမ်းဆည်းခခင်း

Data တ ွေကို သမ်းဆည်း ဲ့ နည်း ၂ နည်းရ ာ Data structure မ ဆက အခန်းမာ

တ ာခဲ့ပ ်း ြစ ါ ယ။

1. တနဖိုံ်း တစခုံသ သိမ်းဆည်းခခင်း - လူ စတယက အသက ဘယနနစလ ဆိုရင လကရ

အသကဟာ နြို်း စခို ရ ါ ယ။ အဒလို စခို ရ ဲ့ နြ်းို တ ွေကို

သမ်းဆည်းချငရင primitive data types နဲ့ သမ်းဆည်းရ ါ ယ။

2. တနဖိုံ်းမ ်းစ စုံစည်း သိမ်းဆည်းခခင်း - တမွေ်းချင်းတမာငနမ တ ွေကို သမ်းမယဆိုရင

ချ ျို့က တမာငနမ စတယာကမ မရဘူ်း၊ စချ ျို့က ၁ တယာကရ ယ၊ ချ ျို့က ၂

တယာကရ ယ။ ချ ျို့က အမျာ်းကက်း ရ ယ ။ ဒတ ာဲ့ အာ်းလို်း အဆငတ ြဆ


ိုဲ့ ိုရင

အမျာ်းကက်း စိုစည်းသမ်းဆည်းလိုဲ့ ရတအာင ြန ်းတ ်းထာ်းရမာ ြစ ါ ယ။

Variable Declaration

Variable Declaration အတ ကာင်း မတ ာခငမာ programming languages တ ွေကို

strongly typed နဲ့ loosely typed languages ဆိုပ ်းခွေလိုဲ့ရ အ


ဲ့ တ ကာင်း အရငတ ာ ါ ဲ့မယ။

▪ strongly typed language ဆို ာ data type ကို programmer ကတ ာတ ်းရ ာ၊

သ မ တ ်းရ ာ ြစ ါ ယ။ ဥ မာ အတနနဲ့ ဆိုရင C, Java, C# ိုဲ့ ြစ ါ ယ။

139 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

▪ Loosely Typed Language ဆို ာ data type ကို programmer က

တ ာတ ်းစရာမလို ါဘူ်း။ programmer assign လို လိုက ဲ့ နြို်းတ ေါ်မှု ညပ ်း

language က auto သ မ တ ်းသွော်း ာ ြစ ါ ယ၊၊ ဥ မာ အတနနက


ဲ့ တ ာဲ့ PHP,

JavaScript ဲ့ို ြစ ါ ယ။

ကတလ်းတလ်း စတယာက တမွေ်းြွော်းလာရင အမညတ ်း ကင ွေန်း လို ရသလို variable

ကိုလည်း declaration လို ရ ဲ့ အတ ကာင်း တရျို့မာတ ာခဲ့ပ ်း ါ ယ။

Data_type variableName [=value];

ဒတရ်းနည်း က strongly typed language မာ variable declaration တရ်းနည်း ြစ ါ ယ။ [=value]

ဆို ာကတ ာဲ့ တထာငဲ့ကွေင်းထ ထညဲ့တရ်းထာ်း ာက option ြစ ါ ယ။ အဓ ပါယကတ ာဲ့

ါလည်းရ ယ၊ မ ါလည်းရ ယ ဆို ဲ့ အဓ ပါယ ြစ ါ ယ။ value ဆို ဲ့ နြို်း assign လို ချင

(ထညဲ့ချင) တရ်း၊ မထညဲ့ချင မတရ်းနဲ့တ ါ ဲ့။

VariableName[=value];

ဆို ာကတ ာဲ့ loosely typed language စခို ြစ ဲ့ PHP မာ variable declaration

လို ဲ့နည်း ြစ ါ ယ။ သူက data type တ ာစရာမလို ါဘူ်း။ Programmer ထညဲ့လိုက ဲ့

နြို်းတ ေါ် ကညဲ့ပ ်း data type ကို language က auto သ မ တ ်းသွော်းမာ ြစ ါ ယ။

Language စခိုနဲ့ စခို တရ်းနည်းတလ်းတ ွေ အနည်းငယတ ာဲ့ ကွေ ါ ယ။

Programming Langauge အမျာ်းစိုမာ စာတ ကာင်း စတ ကာင်းဆို်းရင ‘;’ ြငဲ့ အဆို်းသ

တ ်းရ ါ ယ။ English စာတ ကာင်း စတ ကာင်းမာ ‘.’ နဲ့ အဆို်းသ သလို ြစ ါ ယ။ ဒါတ မဲ့ ချ ျို့

language မာ အဆို်းသ ‘;’ က မလိုအ န ါဘူ်း။ သ ပ ်းတခါင်းရှု မခ ါနဲ့။ Programming

Language စခိုနဲ့ စခို ကွေ ာ်း ယ ဆို ာရယ၊ algorithm ဆို ာ programmer

140 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

အာ်းလို်းန ်းလည ဲ့ အရာဆို ာရယ ဒတလာက သတဘာတ ါကရင ရ ါ ပ ။ ဒမာတ ာဲ့ လိုအ ဲ့

တနရာတလ်းတ ွေမာ Java နဲ့ PHP ကို အသို်း ပ ်း ရင်း သွော်းမာ ြစ ါ ယ။

တနဖိုံ်း တစခုံသ သိမ်းဆည်းခခင်း(Primitive Data Types)

နြို်း စခိုသာ သမ်းဆည်းနိုင ဲ့ data type တ ွေကို Primitive Data Types လိုဲ့

တခေါ် ါ ယ။ Data types ဆို ာက အထ မာ သမ်းမညဲ့ နြို်း(value) ရျို့ အမျ ်းအစာ်းကို

ဆိုလို ာ ြစ ါ ယ။ programming language စခိုနဲ့ စခို ခွေငဲ့ ဲ့ data types တ ွေ

မ ူည က ါဘူ်း။ ဥ မာ Java programming language မာ ခွေငဲ့ ဲ့ data types နဲ့ PHP မာ

ခွေငဲ့ ထာ်း ဲ့ data types တ ွေ မ ူည က ါဘူ်း။ ဒတ ာဲ့ ဒမာ အသို်းမျာ်း ဲ့ primitive data types

တ ွေ ြစ ဲ့ Integer, Double/Float နဲ့ Character သို်းခိုကို အရငတ ာ ကရတအာင ါ။

▪ Interger – data ရျို့ နြို်းက ကန်း ညဲ့ဆိုရင interger data type ါ။ အသကဆိုရင ၄ နစ

၅ နစ စသည ြငဲ့ ကန်း ညဲ့တ ာတလဲ့ရ ါ ယ။ ဒဿမနဲ့ တ ာတလဲ့မရ ါဘူ်း။ ဒါတ ကာငဲ့

အသကဆိုရင integer data type ါ။

int age = 5;

ဒါကတ ာဲ့ Java မာ variable declaration လို ာတလ်း နမူန တရ်း ထာ်း ာ ြစ ါ ယ။

Data type က int(integer), variablename က age, value က 5 ြစ ါ ယ။ ကယလိုဲ့

value နြို်း မထညဲ့ တ က ငာချငရငတ ာဲ့

int age;

လိုဲ့ တရ်းရ ါ ဲ့မယ။

$age=5;

141 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

ဒါကတ ာဲ့ loosely typed language ြစ ဲ့ PHP မာ တရ်း ဲ့ စ


ို ြစ ါ ယ။ loosely type

language ြစ ဲ့အ ွေက data type တ ာစရာမလို ါဘူ်း။ ထညဲ့လိုက ဲ့ နြို်း 5

ကို ကညဲ့ပ ်း integer data type လိုဲ့ auto သ မ သွော်းမာ ြစ ါ ယ။ PHP ရျို့

ထူ်း ခာ်းချကက variable name အတရျို့မာ $ ါရ ါ ယ။

▪ Double/float - data ရျို့ နြို်းက ဒဿမ ဆိုရင double သမ


ိုဲ့ ဟို float သို်းလိုဲ့ရ ါ ယ၊

ဥ မာ PI နြို်းက 3.142 ဆိုတ ာဲ့ Pi ဟာ Double/float data type ါ။ Java မာ

တ က ငာမယဆိုရင

double pi = 3.142; လိုဲ့ တရ်းရမာ ြစ ါ ယ။

▪ စာလို်းတလ်း စလို်း ဥ မာ ‘A’ ဆို ာတလ်း သမ်းချငရင character data type ြစ ါ ယ။

single quote ထမာ ထညဲ့ပ ်းတရ်းတ ်းရ ါ ယ။ A ဆို စလို်း သမ်းလိုဲ့ရ ါ ယ၊ AB နစလို်း

သမ်းလိုဲ့ မရ ါဘူ်း။ Java မာ တရ်းနည်းတလ်း နမူန ရရင

char ch = ‘A’;

လိုဲ့တရ်း ါ ယ။ Java မာ character data type ကို char လိုဲ့တရ်းရ ါ ယ။

ဒတလာကဆိုရင နြ်းို စခို ည်း သမ်းလိုဲ့ရ ဲ့ primitive data types ကို

သတဘာတ ါကတလာကပ ထင ါ ယ။

တနဖိုံ်း မ ်းစ ကိုံ စုံစည်းသိမ်းဆည်းပုံ

နြို်း အမျာ်းကက်းကို စိုစည်း သမ်းဆည်း ဲ့ နည်းတ ွေ အမျာ်းကက်းရ ါ ယ။ ဒအခန်းမာတ ာဲ့

အဒထက

▪ String

142 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

▪ File

▪ Array (one-dimensional array, multi-dimensional array)

▪ Linked list

▪ Tree

ိုဲ့ အတ ကာင်း အနည်းငယ ရင်း သွော်း ါမယ။

String

String ဆို ာ character တ ွေ အ လ


ွေ ိုကကက်း စိုထာ်း ာ ြစ ါ ယ။ character

အလို်းအတရအ ွေက ကက ကသတလာက ါလိုဲ့ရ ါ ယ။ character ဆိုလိုဲ့ a to z လိုဲ့ မထငလိုက ါနဲ့။

keyboard တ ေါ်မာရ ဲ့ key စခိုချင်းဟာ(special characters တ ွေတကာ၊ digit တ ွေတကာ

စသည ြငဲ့ အကိုန ါ ါ ယ။) single quote နဲ့တရ်းရင character တ ွေ ါ ။ ဥ မာ အတနနက


ဲ့ တ ာဲ့

လူန မည၊ ပမ ျို့အမည၊ အမလ စာ စ ာတ ွေ ြစ ါ ယ။ value ကို တရ်းရင double quote နဲ့

တရ်းရ ါ ယ။

String school = “StudyRightNow”;

String schoolType = “Technology School”;

$city = “Mandalay”;

ဒါကတ ာဲ့ java နဲ့ PHP မာ String data type တရ်းနည်းကို နမူန တရ်း ာ ြစ ါ ယ။ data type

ထညဲ့တရ်းထာ်း ာက Java နဲ့ တရ်း ထာ်း ာ ြစပ ်း၊ data type မ ါဘ variable name $ (dollar

sign) နဲ့ စထာ်း ာက PHP နဲ့ တရ်း ထာ်း ာ ြစ ါ ယ။

143 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

File

Roll_No Name Major Year

1 Aye Aye CT Second Year

2 Su Su CT Second Year

3 Aye Aye CT Second Year

4 Aung Aung CT Second Year

Student Table

ဒလို သမ်း ဲ့ စ
ို ကို File လိုဲ့တခေါ် ါ ယ။ တခါင်းစဉတ ွေ ြစ ဲ့ Roll_No, Name, Major, Year ဲ့က
ို ို

attribute or field or properties လိုဲ့ တခေါ် ါ ယ။ 1 , Aye Aye, CT စသည ြငဲ့ table မာ ထမ row

(တခါင်းစဉ) ကလွေပ ်း ကျန ာ အာ်းလို်းကို values လိုဲ့တခေါ် ါ ယ။

1 Aye Aye CT Second Year

ဒါကတ ာဲ့ တကျာင်းသာ်း စတယာကကို ကိုယစာ်း ာ ြစလိုဲ့ record လိုဲ့တခေါ် ါ ယ။ Student

Table မာဆိုရင record 4 ခို ါ ါ ယ။ အဒလို records တ ွေ တ ါင်းထာ်း ာကို File လိုဲ့ တခေါ် ါ ယ။

တန က စခို သတစချင ာက unique ြစ ာ ါ။ unique ြစ ယဆို ာ မထ ာ

သူူ့ကိုတ ာလိုက ာနဲ့ ဘယသူလ ဘာလ န်းပ ်းသတစ ာကို တ ာ ာ ြစ ါ ယ။ Student

Table ကို ကညဲ့ ါ။ Aye Aye ဆိုပ ်း အမည ူ နစတယာကရ ါ ယ။ န မညဆို ာ ူနင
ို ထ နိုငလိုဲ့

unique မ ြစ ါဘူ်း။ ဒါတ မဲ့ roll-no ကတ ာဲ့ မထ ါဘူ်း။ unique ြစ ါ ယ။ ဒါတ ကာငဲ့ ဒ table

မာ roll-no စခိုကို တ ာလိုက ာနဲ့ ဘယသူလ န်းပ ်း သ ါ ယ။ ဥ မာ roll-No 1 ဆို ာနဲ့

1 Aye Aye CT Second Year

144 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Aye Aye, CT, Second Year ကို တ ာမန်း န်းပ ်း သ ာမျ ်း ါ။ အဒလို unique ြစ ဲ့တကာငကို

primary key လိုဲ့တခေါ် ါ ယ။

တန ကထ table စခို ကညဲ့ ကညဲ့ရတအာင ါ။

Roll_No Name Major Year

1 Aye Aye CS Second Year

2 Su Su CS Second Year

1 Min Min CT Second Year

2 Aung Aung CT Second Year

အတ ေါ်က student table ဟာ CT major စခို ည်း ာ ြစလိုဲ့ roll-no မထ ါဘူ်း။ ယခို table

ကတ ာဲ့ CT, CS ဆို ဲ့ major ၂ ခို တရာသမ်းထာ်း ာ ြစလိုဲ့ roll-no 1 ဆိုလည်း 2 တယာက၊ roll_no

2 ဆိုလည်း 2 တယာက ြစတန ါ ယ။ ဒါတ ကာငဲ့ roll-no ဟာ unique မ ြစဘူ်း။ roll-no တ ာရိုနဲ့

ဘယသူလ မသနိုင ါဘူ်း။ ဒါတ မဲ့ CS roll-1 ဆိုရငတ ာဲ့ unique ြစ ါ ယ။ Aye Aye ကို

တ ာမန်းသ ါ ယ။ ဒါတ ကာငဲ့ ဒ table ရျို့ primiary key ကတ ာဲ့ Roll_no နငဲ့ Major နစခို ွေ

ထာ်း ာ ြစ ါ ယ။

ဒ File ၂ ခိုမာ roll-no က 1,2,3 စသည ြငဲ့ သမ်း ာ ြစလိုဲ့ int data type ြစ ါမယ။

ကျန ဲ့ field 3 ခိုကတ ာဲ့ စာသာ်းတ ွေ သမ်း ာ ြစလိုဲ့ String ြစ ါမယ။

Field စခိုချင်းရျို့ data type ကိုသ မ တ ်း ါ။ primary key ဘာ ြစမလ စဉ်းစာ်းတ ်း ါ။

1.

Building_No Room_No Bed_No Patient Doctor Age Address

145 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

2.

Car_No Owner Color Engine_No City

Linear Array or One-Dimensional Arrays

တမွေ်းချင်းညအစကိုမျာ်းကို သမ်းမညဆိုလျှင စတယာကထကမက ရနင


ို ာမဲ့ို array ကို

သို်းပ ်း သမ်း ါမယ။ ဥ မာ ကိုတထွေ်းမာ Ko Ko, Ko Let, Nyi Nyi ဆို ဲ့ တမွေ်းချင်း ၃

တယာကရ ယဆို ါစ။ိုဲ့ ဒါဆို သူူ့မာ ညအစကို ၃ တယာကရလဲ့ို Array အခန်း ၃ ခန်း တနရာယူ ါ ဲ့မယ။

0 Ko Ko
1 Ko Let
2 Nyi Nyi

siblings

▪ Array ရဲ့ အမည ဟာ variable name ြစလိုဲ့ သ မ ထာ်း ဲ့ စည်းကမ်းအ ွေင်းက

ကိုယကက က ာ တ ်းလိုဲ့ရ ယ၊ ဒမာ siblings လိုဲ့ တ ်းလိုကမယ။

▪ Array မာ အခန်းနပါတရ ယ၊ အခန်းန ါ တ ွေဟာ 0,1,2 အစဉလိုက ြစ ါ ယ။ Java

မာက array အခန်းန ါ ဟာ programmer သ မ ခွေငဲ့မရ ါဘူ်း။ အစဉလိုက auto

သ မ တ ်းပ ်း အပမ 0 က စ ါ ယ။ PHP မာတ ာဲ့ 0 က စ ဲ့ auto သ မ တ ်း ဲ့

အခန်းန ါ အစဉလိုကလရသလို၊ မမ နစသကရာ အခန်းန ါ သ မ လရ


ိုဲ့ ါ ယ။

▪ 0,1,2 ဆို ဲ့ အခန်းန ါ ကို index လိုဲ့တခေါ် ါ ယ။

▪ VariableName [index] ဆိုရင အထမာထညဲ့ထာ်း ဲ့ value ရ ါ ယ။ ဥ မာ siblings[0]

ဆိုရင အထက value ြစ ဲ့ Ko Ko ဆို ာ ရ ါမယ။

146 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

▪ တထာငဲ့ကွေင်း [] ထ တရ်း ဲ့ဟာကို အခန်းန ါ index လိုဲ့တခေါ် ယ၊ ဒမာ Ko Let ကိုလိုချငရင

တထာငဲ့ကွေင်းထ 1 ဆို ဲ့ index စခိုတရ်းလိုက ာနဲ့ သရ ယ။ ဒါတ ကာငဲ့ index စခို

တရ်းရလိုဲ့ one-dimensional array လိုဲ့တခေါ် ါ ယ။

▪ Values တ ွေ ြစ ဲ့ Ko Ko, Ko Let, Nyi Nyi ိုဲ့ ဆို ာ စာသာ်းတ ွေ၊ နည်းအာ်း ြငဲ့

character တ ွေ စိုထာ်း ာ ြစလိုဲ့ siblings array ဟာ String data type ြစ ါလမဲ့မယ။

Two-Dimensional Arrays

ဦ်းလမာ XYZ လိုဲ့တခေါ် ဲ့ စ ်းို ဆိုငခွေတ ါင်း 4 ခိုရ ယ။ အမညတ ွေကို ြွေငဲ့ ဲ့ အစဉလိုက

XYZ1, XYZ2, XYZ3, XYZ4 လိုဲ့တ ်းထာ်း ယ။ စ ို်းဆိုင စခိုချင်းစရျို့ စလချင်းစရျို့ အ မ ကို

သမ်းချင ယ။ ဒါဆိုရင စ ်းို ဆိုင အမ ၁ ရျို့ January လ အ မ ကို သချင ယဆိုရင XYZ1,

January ဆိုပ ်း ဆိုငအမညတရာ, လအမည ါ ၂ ခိုတ ာမ သရမယ။ ဒလို ၂ ခိုတ ာမ သရ ာ ြစလိုဲ့

Two-Dimensional array လိုဲ့တခေါ် ါ ယ။

January February … December


XYZ1 2,000,000 1,000,000 1,000,000
XYZ2 1,500,000 700,000 500,000
XYZ3 3,000,000 2,500,000 4,000,000
XYZ4 3,000,000 1,000,000 1,000,000

▪ Array အမည variable name ဟာ ကက က ာတ ်းလိုဲ့ရ ယ၊ ဒမာတ ာဲ့ profits လိုဲ့

တ ်းထာ်း ယ ဆို ါတ ာဲ့။

▪ Profits [ XYZ1][January] လိုဲ့ တရ်းရင 2,000,000 ဆို ာ ထွေကလာမာ ြစ ယ။

147 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

▪ တထာငဲ့ကွေင်းနစခို [] ကာ်းတရ်း ဲ့ ဟာကို အခန်းန ါ index လိုဲ့တခေါ် ယ၊ ဒါတ ကာငဲ့ XYZ1

ရယ၊ January ရယ ဆို ာက အခန်းန ါ index တ ွေ ြစ ယ။

▪ ဒါတ ကာငဲ့ စခိုသရြိုဲ့ စ ို်းဆိုင အမညရယ၊ လအမညရယ ဆို ဲ့ index ၂ ခုံပခပ မှ သိမှ

ခဖစတဲ့အတကပ က ငဲ့ two-dimensional array လိုံို့ပခေါ်တယ။ တ ာင်း န နတ ာမယ

ဆိုရငတ ာဲ့ two dimensional array မာ အထက value ကို လိုချငရင

variableName[row][column] ဆိုပ ်း တ ာရ ါ ယ။

▪ အထမာ သမ်းထာ်း ာတ ွေက ဂဏန်းတ ွေက ကန်း ညဲ့တ ွေ ြစလိုဲ့ integer data type ါ။

ဒဿမ တ ွေ ါနိုင ယ၊ ဒဿမ ါ သမ်းချင ယဆိုရငတ ာဲ့ profits ဆို ဲ့ two-dimensinal

array တလ်းဟာ double/float data type ြစသွော်း ါမယ။

Linked Lists

ဒ စခါ တဆ်း company စခိုကို စဉ်းစာ်း ကညဲ့ ကရတအာင ါ။ တဆ်း company မာ

အတရာင်း ဝနထမ်း (salesperson) တ ွေ ရ ါ ယ။ သူ ဲ့ဟ


ို ာ သူ ိုဲ့ ာဝနယူရ ဲ့ ဆရာဝန(doctor)

တ ွေဆကို company က တဆ်း စစည်းတ ွေ တရာင်းချြဲ့ို ာဝနယူရ ါ ယ။ အရင ချ ဆကမ ဲ့

ဆရာဝနက န ါ စဉ ၁ ြစပ ်း၊ ဒို ယ ချ ဆကမ ဲ့ ဆရာဝနက န ါ စဉ ၂ စသည ြငဲ့

သမ်းထာ်း ါ ယ။ ဆိုလို ာက ဆရာဝနတ ွေကို စ ငချ ဆကမ ဲ့ ရကစွေအလိုက

ငယစဉကက်းလိုက စပ ်း သမ်းထာ်း ာ ြစ ါ ယ။

Doctor Salesperson

1 U Tin Ohn Yi Mon

2 U Mung Mung Aung Aung

3 U Tun Kyi Yi Mon

148 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

4 Daw May Thit Su Hlaing

5 Daw Myo Myo Yi Mon

6 U Sai Hla Aung Aung

7 U Kyaw Kyaw Su Hlaing

8 Daw Tin Mar Aung Aung Aung

သူ ိုဲ့ ာဝနယူထာ်းရ ဲ့ စာရင်း သမ်းဆည်းထာ်း ဲ့ က


ို ို နမူန ကညဲ့ ါ။ Yi Mon ဆို ဲ့

အတရာင်းဝနထမ်း ာဝနယူ ဲ့ ဆရာဝနစာရင်းကို သချငရင အာ်းလို်းလိုက ကညဲ့ပ ်း sale person မာ

Yi Mon တ ွေ လိုကရာရ ါ ယ။ မလွေယ ါဘူ်း။ ဒမာ data နည်းလိုဲ့ (၈ တ ကာင်း ည်းရတသ်းလိုဲ့)

ကညဲ့ရ ာအဆငတ တနတသ်း ာ ါ၊ data တ ွေ အရမ်းမျာ်းလာရင(တထာငချ တသာင်းချ ြစလာရင)

Yi Mon လိုကရာရ ာ မလွေယကူ ါဘူ်း။ ဒါဆို ရာရလွေယတအာင ဘယလို သမ်း ကမလ၊ linked list


ို နဲ့ သမ်း ါ ဲ့မယ။ ကညဲ့ ကညဲ့ရတအာင ါ။

Index Doctor Link Salesperson Pointer

1 U Tin Ohn 3 Yi Mon 1

2 U Mung Mung 6 Aung Aung 2

3 U Tun Kyi 5 Su Hlaing 4

4 Daw May Thit 7

5 Daw Myo Myo 0

6 U Sai Hla 8

7 U Kyaw Kyaw 0

8 Daw Tin Mar Aung 0

149 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

▪ Yi Mon ာဝနယူထာ်း ဲ့ doctors စာရင်းကို ကညဲ့ချငရင salesperson table က Yi Mon ရျို့

pointer နြို်းကို ကညဲ့ ါ။ နြို်းက 1 ြစတန ါ ယ။ ဒ တ ာဲ့ doctor table က index 1

ြစ ဲ့ သူကို ကညဲ့တ ာဲ့ U Tin Ohn ြစ ါ ယ၊ သူူ့ရျို့ link နြို်း ကညဲ့လိုကတ ာဲ့ 3

ြစတန ါ ယ။ ဒတ ာဲ့ index 3 ကို လိုက ကညဲ့ ါ ယ။ U Tun Kyi ါ၊ link နြို်း

ဆက ကညဲ့ ါမယ။ 5 ဆိုတ ာဲ့ index 5 ကိုသွော်း ကညဲ့ ါ ယ။ Daw Myo Myo ါ၊ သူမရျို့link

ဆက ကညဲ့တ ာဲ့ 0 ြစ ဲ့အ ွေက ဆကသွော်းစရာ မလိုတ ာဲ့ ါဘူ်း။ ဒတ ာဲ့ Yi Mon

ာဝနယူထာ်း ဲ့ ဆရာဝန ၃ ဦ်းရ ါ ယ။ U Tin Ohn, U Tun Kyi နဲ့ Daw Myo Myo

ဲ့ို ြစ ါ ယ၊ U Tin Ohn ကတ ာဲ့ Yi Mon ထမဆို်း စချ ဲ့ ဆရာဝန ြစပ ်း၊ ဒို ယချ ဲ့

ဆရာဝနကတ ာဲ့ U Tun Kyi ြစ ါ ယ၊ တန ကဆို်းချ ာကတ ာဲ့ Daw Myo Myo ါ။

မငသာတအာင မ
ို ာ arrow နဲ့ ထာ်း ါ ယ။

▪ Aung Aung အ ွေကလည်း arrow တလ်းနဲ့ ထာ်းတ ်း ါ ယ။ Aung Aung နဲ့ Su Hlaing အ ွေက

တလဲ့ကျငဲ့ ကညဲ့ ါ။

▪ Doctor table မာ ထမ column ြစ ဲ့ index နဲ့ link ဟာ ကန်း ညဲ့တ ွေ ြစ ာတ ကာငဲ့

integer data type ြစပ ်း၊ doctor ကတ ာဲ့ စာသာ်းတ ွေ ြစ ာတ ကာငဲ့ string data type

ြစ ါလမဲ့မယ။ Salesperson table ကိုတ ာဲ့ မမဟာ မမ ဘာ data type တ ွေ ြစမလဆို ာ

စဉ်းစာ်း ကညဲ့ ါ။

ပလဲ့က ငဲ့ ကညဲ့ ကရပအ င။

1. ကယလိုဲ့ ဆရာဝန စတယာကနဲ့ စ ငချ ဆက ဲ့ရက ကို ါသမ်းချငရင ဘယလို

လို မလ စဉ်းစာ်း ကညဲ့ ါ။ တအာကကစာ ဆကမြ ါနအ


ဲ့ ို်း၊ စဉ်းစာ်းပ ်းမ ဆကြ ါ။

150 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

ဆရာဝန စတယာကနဲ့ စ ငချ ဆက ဲ့ရက ဆို ာ Doctor နဲ့ သကဆိုင ဲ့

အချကလက ြစ ဲ့အ ွေက Doctor table မာ ထ ထညဲ့မာ ါ။ Salesperson table ကတ ာဲ့

ဒအ င
ို ်း ရတနမာ ါ။

Index Doctor Join_Date Link

2. Salesperson စဦ်းချင်းစ အလို ဝင ဲ့ တနဲ့ကို ါသမ်းချင ယဆိုရင ဘယလို လို မလ

စဉ်းစာ်း ကညဲ့ ါ။ ထို်းစအ င


ို ်း တအာကကစာ ဆကမြ ါနအ
ဲ့ ို်း၊ စဉ်းစာ်းပ ်းမ ဆကြ ါ။

Salesperson နဲ့ သကဆိုင ာ ြစလိုဲ့ Salesperson table မာ သွော်းထညဲ့မာ ြစ ါမယ။

Salesperson Start_Date Pointer

3. ဒါဆို အလို စဝင ဲ့ တနဲ့တကာ၊ ဆရာဝနနဲ့ စချ ဲ့တနဲ့တကာ သမ်းချငရင ဘယလိုလို မလ။

အလို စဝင ဲ့တနဲ့က Salesperson နဲ့ ဆိုင ာမိုဲ့ Salesperson table မာ ထညဲ့ပ ်း၊ ဆရာဝနနဲ့

စချ ဲ့တနက ဆရာဝန စဦ်းချင်းစနဲ့ ဆိုင ာမိုဲ့လိုဲ့ Doctor table ဆရာဝနရျို့ တဘ်းမာ

ထညဲ့ ါ ဲ့မယ၊ ကဒတလာကဆိုရင သတဘာ တ ါကတလာကပ ထင ါ ယ။

အခိုတ ာသွော်း ဲ့ linked list နမူန ကို အလွေယတ ာရရင one to many relationship

လိုဲ့တ ာလိုဲ့ရ ါ ယ။ Salesperson စတယာကဟာ ဆရာဝနတ ွေ အမျာ်းကက်းနဲ့

ချ ဆကထာ်း ဲ့ အ ွေက one to many relationship ါ။ အဒလို အတ ခတနမျ ်းအ ွေက linked list

ကို အသို်း ါ ယ။

151 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Tree Structure or Hierarchical Structure

Student

Father Name Mother Name Address Phone DOB

Division City House Student guardian


Phone
Phone

Street House No.

Hierarchical ဆို ဲ့ အ င
ို ်း အဆငဲ့ဆငဲ့ အထ ထ ခွေခွေသွော်း ဲ့ စ
ို နဲ့ သမ်းချင ဲ့ အခါမျ ်းမာ

သို်း ါ ယ။ သူကို မငသာတအာင ရ ရငတ ာဲ့

01 Student

02 Father Name

02 Mother Name

02 Address

03 Division

03 City

03 House

04 Street

152 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

04 House No.

02 Phone

03 Student Phone

03 Guardian Phone

02 DOB

▪ Tree မာ ါ ဲ့ Student ိုဲ့ Father Name, Mother Name စသည ြငဲ့ ါ ဲ့

အရာတလ်းတ ွေကို Node လိုဲ့ တခေါ် ါ ယ။

Chapter အနှစခ ျုပ

▪ ဒ အခန်းမာ နြို်း စခို ည်းသမ်းဆည်း န


ဲ့ ည်း နငဲ့ နြို်းတ ွေ စိုစည်း သမ်းဆည်း ဲ့

နည်း အချ ျို့ကို တ ာသွော်း ာ ြစ ါ ယ။

▪ File ဆို ာ non-volatile ြစ ဲ့ secondary memory တ ေါ်မာ သမ်းဆည်း ာ ြစလိုဲ့

စက လည်း data တ ွေကို ဆကပ ်း သမ်းထာ်းနိုင ါ ယ။

▪ ကျန ဲ့ သမ်းဆည်းနည်းတ ွေကတ ာဲ့ စက လိုကရင program လိုကရင

တ ျာကသွော်း ဲ့ volatile memory တ ေါ်မာ သမဆည်း ာ ြစ ါ ယ။

▪ Fields or attributes or properties ဆို ာ column name, အဒအထ ထညဲ့ ဲ့

နြို်းတ ွေက value, အဒ value တ ွေကို row လိုကစိုပ ်း စဦ်း၊ စတယာက၊ စခိုကို

ညွေန်း ာက record, အဒလို records တ ွေ စိုထာ်း ာက File ြစ ါ ယ။

▪ Primary key ဆို ာ unique ြစ ဲ့ attribute ကို တ ာ ာ ြစ ါ ယ။ အဒ attribute ရျို့

value ကို တ ာလိုက ာနဲ့ ဘယသူလ ဘာကိုတ ာ ာလ န်းပ ်း သ ာမျ ်း ြစ ါ ယ။

153 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

primary key ဟာ attribute စခို ြစနိုငသလို၊ စခိုထက ို ဲ့ attributes တ ွေ

တ ါင်းစ ထာ်း ာလည်း ြစနိုင ါ ယ။

▪ One-dimensional array ဆို ာ index (အခန်းန ါ ) စခို လို ါ ယ။

▪ Tow-dimensional array ဆို ာ index 2 ခိုလို ါ ယ။ index 3 ခိုလရ


ို င three-

dimensional array လတ
ိုဲ့ ခေါ် ါ ယ။ 2 dimensional array နဲ့ အထကကို multi-

dimensional array လိုဲ့ တခေါ် ါ ယ။

▪ One to many relationship ( စခိုကတန အမျာ်းသိုဲ့ ဆကစ ချ ဆကမှု) အ ွေက Linked

list ကို သို်း ာ တ ာခဲ့ ါ ယ။ many to many relationship (အမျာ်းမ အမျာ်းသိုဲ့ ဆကစ

ချ ဆကမှု) ကိုတ ာဲ့ တန ကအခန်းတ ွေမာ အတ ခအတနတ ်းရင ဆကတ ာ ါ ဲ့မယ။

▪ အဆငဲ့ဆငဲ့ အထ ထ ခွေခွေသွော်း ဲ့ စ
ို နဲ့ သမ်းချင ဲ့ အခါမျ ်းမာ tree or hierarchical

structure ကို သို်း ါ ယ။

▪ တန ကပ ်း စိုစည်းသမ်းဆည်း ာ ရျို့ အစ အ ိုင်း စခိုချင်းကို data type တ ွေ

သ မ ခိုင်း ာ သ ထာ်းမမယ ထင ါ ယ။ ဒါဆို primitive data type int ဆိုရင

ကန်း ညဲ့ စလို်း သမ်းရ ယ၊ primitive data type double ဆိုရင ဒဿမ ဂဏန်း

စလို်းသမ်းလိုဲ့ရမယ၊ primitive data type char ဆိုရင character စလို်း

သမ်းလိုဲ့ရမယ။ String ဆိုရင character တ ွေ အ လ


ွေ ိုကကက်း သမ်းလိုဲ့ရမယ။

စိုစည်းသမ်းဆည်း ာ စခိုမာ primitive data type တ ွေတရာ string လိုမျ ်းတကာ

အမျာ်းကက်း စိုပ ်း သမ်းဆည်း ယဆို ာ သတဘာတ ါကတလာက ါပ ။

154 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

အခန်း (၁၁)

String Operations

String ဆိုတာဘာလဲ။

String ဆိုတာ character တတွေ စိုထာားတာ၊ String တစ်ခိုမာ character တတွေ

ကကြိုက်သတ ာက် ပါ ရ
ိုို့ တယ်ဆိုတာ တ ပာခဲ့ပပြီားပါပပြီ။ တ ောက်တစ်ခိုက တူညြီတဲ့ data type တတွေ

စိုထာားတာကို array ိုို့ တခေါ်ပါတယ်။ ဒါတ ကာငဲ့် string ကို character array ိုို့ ည်ား

တ ပာ ိုို့ရပါတယ်။ Array အခ ်ား ံပါတ်သည် ပံိုမ ် ဆိုရင် 0 ကတ စပါတယ်။ ဒါတ ကာငဲ့် String

ဟာ ည်ား အခ ်ား ံပါတ် 0 ကတ စပါတယ်။

“I CAN FLY” ဆိုတဲ့ string တ ားကို array ပံစ


ို ံ မင် ကညဲ့်မယ်ဆိုရင်

I C A N F L Y
0 1 2 3 4 5 6 7 8
ဒြီ ိုပံိုစံ တတွေွေ့ မင်ရမာ ြစ်ပါတယ်။ 0 အခ ်ားက I, 1 အခ ်ားမာက space, 2 အခ ်ားမာက C စသည် ြငဲ့်

တ ရာယူသွောားပါတယ်။ အခ ်ား ံပါတ်ဟာ 0 to 8 ြစ် ိုို့ array ရွေ့ length (စိုစိုတပါင်ား

အခ ်ားအတရအတွေက်) ဟာ 9 ြစ်ပါမယ်။

Length

Length ဆိုတာ string မာ character ဘယ်နစ် ံိုားပါ တ ပာတာ သတ ာက်ပါပပြီ။

LENGTH(“life is a song”) = 14, LENGTH(“mandalay”) = 8

155 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Upper Case and Lower Case

toUpper(string) – string ကို အကကြီားစာ ံိုား upper case ကို တ ပာင်ားတာ ြစ်ပါတယ်။

toLower(string) – string ကို အတသားစာ ံိုား lower case ကို တ ပာင်ားတာ ြစ်ပါတယ်။

toUpper(“I can fly”) = “I CAN FLY”

toLower(“I Can fly”) = “i can fly”

Substring

Substring ဆိုတာ String ထကတ String အပင


ို ်ားအစတ ားကို ြတ်ယူ ိုက်တာ ြစ်ပါတယ်။

SUBSTRING (string, initial, length)

SUBSTRING ဆိုတဲ့ function မာ parameter 3 ခို က


ို ်ပါတယ်။ ပထမ တစ်ခိုက မူရင်ား string, initial

ဆိုတာ စမညဲ့် ခ ်ား ံပါတ်၊ length ဆိုတာ အ ံိုားအတရအတွေက် ြစ်ပါတယ်။

SUBSTRING(“I CAN FLY”, 2, 3) = CAN

SUBSTRING(“I CAN FLY”, 1, 4) =_CAN (spaceCAN ဆိုပပြီား ရမာ ြစ်ပါတယ်။)

တခ ြိုွေ့ language တတွေမာတတာဲ့ length အစာား၊ end ြစ်တတ်ပါတယ်။

SUBSTRING (string, initial, end)

SUBSTRING(“I CAN FLY”, 2, 5) = CAN

initial က 2 ြစ်တဲ့အတွေက် 2 အခ ်ားကတ စတယ်၊ end က 5 ြစ်တဲ့အတွေက် 5 မတရာက်ခင် 4

အခ ်ားထ ြတ်သွောားတာ ြစ်ပါတယ်။ဒါတ ားကသတအာင်တ ပာသွောားတာပါ။

156 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Indexing

INDEX(String, pattern)

INDEX(“I am the captain of my soul”, “ the”) = 4

“ the” ကို ိုက်ရာပါတယ်။ တတွေွေ့တယ် တတွေွေ့တတာဲ့ “ the” ရွေ့ ပထမဆံိုား character ြစ်တဲ့ space

တတွေွေ့တဲ့ အခ ်ား ံပါတ် 4 ကို return ပ ်တပားထာ ြစ်ပါတယ်။

INDEX(“I am the captain of my soul”, “hello”) = -1

array အခ ်ား ံပါတ်ဟာ 0 ကစပပြီား ကကြီားကကြီားသွောားတာ ြစ် ိုို့ မတတွေွေ့ရင် မရတဲ့ အခ ်ား ံပတ် -1

ထွေက်တာ ြစ်ပါတယ်။

INDEX(“I am a student”, “a”) = 2

a ကနစ်တ ရာပါပါတယ်၊ ဘယ်နစ်တ ရာပပါပါ INDEX function ဟာ အပမ 0 ခ ်ားကတ စပပြီားရာတယ်။

ပပြီားရင်ပထမဆံိုားတတွေွေ့တဲ့ တ ရာကို return ပ ်တပားမာ ြစ်ပါတယ်။

INDEX(String, pattern, fromIndex)

Parameter 3 ခို က်ခတ


ံ ဲ့ Index Function ြစ်ပါတယ်။ ဘယ်အခ ်ားကတ စပပြီားရာမ ဆိုတဲ့

fromIndex တားို ာတာ ြစ်ပါတယ်။

INDEX(“I am a student”, “a”,0) = 2

INDEX(“I am a student”, “a”, 3) =5

157 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

LASTINDEX(String, pattern)

LASTINDEX function ဟာ INDEX function ို့ တူပါတယ်။ ကွေတာကတတာဲ့ ထပ်ခါထပ်ခါ

ပါတ တဲ့အခ ်ဆို INDEX က ပထမဆံိုားတတွေွေ့တဲ့ တ ရာကို return ပ ်တပားပပြီား၊ LASTINDEX ကတတာဲ့

တ ောက်ဆံိုားတတွေွေ့တဲ့တ ရာကို return ပ ်တပားပါတယ်။

LASTINDEX(“I am a student”, “a”) = 5

a ကနစ်တ ရာပါပါတယ်၊ ဘယ်နစ်တ ရာပပါပါ LASTINDEX function ဟာ တ ောက်ဆံိုားတတွေွေ့တဲ့

တ ရာကို return ပ ်တပားမာ ြစ်ပါတယ်။

Concatenation

CONCAT(String1, String2)

Concatenation ဆိုတာက String နစ်ခိုကို ဆက်တာ ြစ်ပါတယ်။

CONCAT(“Life is beauty,” , “ admire it.”) = “Life is beauty, admire it”

Insertion

INSERT(String, position, String2)

Insert function မာ parameter 3 ခိုပါပါတယ်။ မူရင်ား string ရယ်၊ ထညဲ့်ခ င်တဲ့ တ ရာရယ်၊

ထညဲ့်ခ င်တဲ့ စာသာား string ရယ် ြစ်ပါတယ်။

INSERT(“Hello Mandalay”, 5, “! welcome to”) = “Hello! Welcome to Mandalay”

158 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

5 ဆိုတဲ့ position တ ရာဆိုတတာဲ့ Hello ရွေ့တ ောက်ကပ်ရက်မာ “! welcome to” ဆိုတဲ့ စာသာားကို

ထညဲ့်သွောားတာ ြစ်ပါတယ်။

INSERT(“ABCDEFGH”, “XYZ”,4) = “ABCDXYZEFGH”

Deletion

DELETE(String, position, length)

Insert function မာ parameter 3 ခိုပါပါတယ်။ မူရင်ား string ရယ်၊ စြ က်ခ င်တဲ့ တ ရာရယ်၊

ြ က်မညဲ့်အ ံိုားအတရအတွေက်ရယ် ြစ်ပါတယ်။

DELETE(“ABCDEFG”, 3,2 ) = “ABCFG”

“ABCDEFGHIJKLMNO” ထက “FGH” ကို ရာပပြီားြ က်ခ င်တယ်ဆိုရင်

▪ “FGH” တတွေွေ့တဲ့တ ရာကတ စပပြီား ြ က်မာ ြစ် ိုို့ position တ ရာမာ

INDEX(“ABCDEFGHIJKLMNO” ,“FGH”)

▪ “FGH” ဆိုတတာဲ့ သူမာပါတဲ့ အ ံိုားအတရအတွေက် ြ က်မာ ြစ် ိုို့ LENGTH(“FGH”)

ဒါတ ကာငဲ့်

DELETE(“ABCDEFGHIJKLMNO”, INDEX(“ABCDEFGHIJKLMNO” ,“FGH”), LENGTH(“FGH”))

ိုို့တရား ိုို့ရပါတယ်။

Trace ိုက် ပရရင်

INDEX(“ABCDEFGHIJKLMNO” ,“FGH”) = 5

159 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

LENGTH(“FGH”) = 3

DELETE(“ABCDEFGHIJKLMNO”, 5, 3) = “ABCDEIJKLMNO”

Replacement

REPLACE(String, oldstr, newstr)

String ရွေ့ oldstr တတွေတ ရာမာ newstr ကို အစာားထိုားမာ ြစ်ပါတယ်။

REPLACE(“ABCDABE”, “AB”, “TTT”) = “TTTCDTTTE”

“ABCDABE” ထက “AB” တတွေွေ့သမျှတ ရာတတွေအာား ံိုားမာ “TTT” ကို အစာားထိုား ိုက်တာ ြစ်ပါတယ်။

လလေ့ကျငေ့ကကညေ့ ကကရလအာင။

1.text = “Life is beauty, admire it. Life is a dream, realize it. Life is a challenge, meet it.”

Str =”Life”

a) Length (text) = ?

b) Length(Str) =?

c) “challenge, meet it.” ဆတ


ို ာတ ားကို substring ကို အသံိုား ပြိုပပြီား text ထမ ဆွေထိုတပ
် ါ။

d) text ထက Str ကိုတတွေွေ့တဲ့ ပထမဆံိုားအခ ်ား ံပါတ် ို့ တ ောက်ဆံိုားအခ ်ား ံပါတ်ကို သငဲ့်တတာ်တဲ့

functions မ ာားသံိုားပပြီား ရာပါ။

e) INDEX(text, “TO”) = ?

160 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

2. Word ဆိုတဲ့ စကာား ံိုား တစ် ံိုားရမယ်။ အဒြီထကို ထညဲ့်ခ င်တဲ့ စာသာား ထညဲ့်ထာားမယ်။ အဒြီ word

ကို infinitive ပံစ


ို ံတ ပာင်ားခ င်တယ်။ မူ ောတ ားတတွေ တစ်ခ က် ကညဲ့် ကညဲ့်ပါ။

Works => work, Goes => go, Flies => fly, Worked => work, Working => work

ဆို ိုတာက s, es, ies, ing, ed ဆံိုားခဲ့ရင် ြြိုတ်တာ ြစ်ပါတယ်။ ဆံိုားခဲ့ရင် ဆိုတတာဲ့ conditional

statement သံိုားြို့ို ိုပါတယ်။ ies ဆိုရင် ies ကို ြြိုတ်ပပြီား y ထညဲ့်တပားရပါတယ်။ ပံမ
ို မ
် ဟိုတတ
် ဲ့

irregular verb တတွေအတွေက်တတာဲ့ ထညဲ့်မစဉ်ားစာားပါ ို့။ အတပေါ်မာတ ပာခဲ့တဲ့ function တတွေကိုသံိုားပပြီား

algorithm တစ်ခိုတရားရမာ ြစ်ပါတယ်။

အဒြီ algorithm ဟာ word ဆိုတဲ့ string ကို parameter အ ြစ် က်ခံမာ ြစ်ပပြီား ြြိုတ်စရာရတာ

ြြိုတ်ပပြီားသာား string ကို return ပ ်တပားမာ ြစ်ပါတယ်။

Delete Every Occurrence Algorithm

မူရင်ား string ထက သူရာခ င်တဲ့ string ကို ရာပပြီား တတွေွေ့ရာတ ရာ အကို ် ြ က်မာ ြစ်ပါတယ်။

Algorithm: Delete Every Occurrence

/*delete every occurrence of str in Text*/

1. deleteEveryOccurrence(Text, str)
2. I = INDEX(Text, str)
3. Repeat while I!=-1:
4. Text = DELETE(Text, I, LENGTH(str))
5. I = INDEX(Text, str)
6. End of Loop
7. Return Text

161 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

ထံိုားစံအတင
ို ်ား trace ိုက်ပါမယ်။

removeText = deleteEveryOccurrence (“ABCDABEFABGH”, “AB”)

Line Text Str Index(i) အလိုပလိုပပို

1 ABCDABEFABGH AB

2 0 I = INDEX (Text,Str) = 0

3 I != -1 => 0 !=-1 ဆိုတတာဲ့မ ်တယ်၊ line 4 ကို

ိုပ်မယ်။

4 CDABEFABGH Text = DELETE(Text, I, LENGTH(str))

Text = DELETE(“CDABEFABGH”, 0, 2)

Text= CDABEFABGH

5 2 I = INDEX(Text, str)

I = INDEX(“CDABEFABGH”, “AB”)

I = 2 ရပါတယ်။ အမ က
် while condition မာ

index(i) တ ်ြိုား -1 ို့ မညြီမခ င်ား ိုို့

စစ်ထာားတအ
ဲ့ တွေက် AB ကိုတတွေွေ့တဲ့ index (i) ကို

update ိုပ်ထာားတာ ြစ်ပါတယ်။

6 End of Loop ဆိုတတာဲ့ while condition

တရားထာားတဲ့ line 3 ကို ပ ်တက်ပါ ဲ့မယ်။

3 I != -1 => 2 !=-1 ဆိုတတာဲ့မ ်တယ်၊ line 4 ကို

ိုပ်မယ်။

162 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

4 CDEFABGH Text = DELETE(Text,I, LENGTH(str))

Text = DELETE(“CDABEFABGH”, 2, 2)

Text= CDEFABGH

5 4 I = INDEX(Text, str)

I = INDEX(“CDEFABGH”, “AB”)

I = 4 ရပါတယ်။ အမ က
် while condition မာ

index(i) တ ်ြိုား -1 ို့ မညြီမခ င်ား ိုို့

တ ပာတအ
ဲ့ တွေက် AB ကိုတတွေွေ့တဲ့ index (i) ကို

update ိုပ်ထာားတာ ြစ်ပါတယ်။

6 End of Loop ဆိုတတာဲ့ while condition

တရားထာားတဲ့ line 3 ကို ပ ်တက်ပါ ဲ့မယ်။

3 I != -1 => 4 !=-1 ဆိုတတာဲ့မ ်တယ်၊ line 4 ကို

ိုပ်မယ်။

4 CDEFGH Text = DELETE(Text, I, LENGTH(str))

Text = DELETE(“CDEFABGH”, 4, 2)

Text= CDEFGH

5 -1 I = INDEX(Text, str)

I = INDEX(“CDEFGH”, “AB”)

မတတွေွေ့တတာဲ့တဲ့ အတွေက် I = -1 ရပါတယ်။

6 End of Loop ဆိုတတာဲ့ while condition

တရားထာားတဲ့ line 3 ကို ပ ်တက်ပါ ဲ့မယ်။

163 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

3 I != -1 => -1 !=-1 ဆိုတတာဲ့ condition

မာားသွောားပပြီ ြစ် ိုို့ end of loop အ ပင်ြက် line

7 ကို ိုပ်မယ်။

7 Return “text” ဆိုတတာဲ့ return “CDEFGH”

ဆိုပပြီား မ်ားတခေါ်တဲ့ တ ရာကို

အတ ြ ပ ်ပိုို့ ိုက်ပါတယ်။

Pattern Matching

Text ထကတ str ကို ိုက်ရာရင် ဘယ် ိုရာ တစ်ခ က် ကညဲ့် ကညဲ့်ရတအာင်။

Text = “abcdefg”

str = “dez”

ိုို့ ဆိုခဲ့ရင် ရာခ င်တဲ့ str ဟာ length 3 ရပါတယ်။ သူူ့ရွေ့ တိုက်တဲ့ ပံတ
ို ား တစ်ခ က်

ကညဲ့် ကညဲ့်ရတအာင်

Str Start Text ရဲဲ့ ရှင်းလင်းချက တက


ို ရတဲေ့

Index substring အကကမ

dez 0 abc Text ရွေ့ 0 ခ ်ားကတ စပပြီားတက


ို ်မယ်။ dez length 1

အတင
ို ်ား ၃ ံိုား ြတ်ယူတယ်။ တရွေ့ဆံိုား character 2

ံိုား ြစ်တဲ့ d ို့ a ကိုတက


ို ်တယ်။ မတူတတာဲ့

ဆက်မတိုက်တတာဲ့ဘူား။ ၁ကကမ်ပ တိုက် ိုက်ရတယ်။

164 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

dez 1 bcd Text ရွေ့ 1 အခ ်ားကတ စပပြီား တက


ို ်မယ်။ တရွေ့ဆံိုား 1

character 2 ံိုား ြစ်တဲ့ d ို့ b ကိုတိုက်တယ်။

မတူတတာဲ့ ဆက်မတိုက်တတာဲ့ဘူား။ ၁ကကမ်ပ

တက
ို ် ိုက်ရတယ်။

dez 2 cde Text ရွေ့ 2 အခ ်ားကတ စပပြီား တက


ို ်မယ်။ တရွေ့ဆံိုား 1

character 2 ံိုား ြစ်တဲ့ d ို့ c ကိုတိုက်တယ်။

မတူတတာဲ့ ဆက်မတိုက်တတာဲ့ဘူား။ ၁ကကမ်ပ

တက
ို ် ိုက်ရတယ်။

dez 3 def Text ရွေ့ 3 အခ ်ားကတ စပပြီား တက


ို ်မယ်။ 3

တရွေ့ဆံိုား character 2 ံိုား ြစ်တဲ့ d ို့ d ကိုတိုက်တယ်။

တူတတာဲ့ ဆက်တိုက်မယ်။

ဒိုတယ character 2 ံိုား ြစ်တဲ့ e ို့ e ကိုတိုက်တယ်။

တူတတာဲ့ ဆက်တိုက်မယ်။

တတယ character 2 ံိုား ြစ်တဲ့ z ို့ e

ကိုတိုက်တယ်။ မတူတတာဲ့ မတတွေွေ့ဘူား ြစ်သွောားတယ်။

3 ကကမ်တိုက် ိုက်ရတယ်။

Dez 4 efg Text ရွေ့ 4 အခ ်ားကတ စပပြီား တက


ို ်မယ်။ တရွေ့ဆံိုား 1

character 2 ံိုား ြစ်တဲ့ d ို့ e ကိုတိုက်တယ်။

မတူတတာဲ့ ဆက်မတိုက်တတာဲ့ဘူား။ ၁ကကမ်ပ

တက
ို ် ိုက်ရတယ်။

165 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

အခ ်ား 5 ကစပပြီား ယူမယ်ဆိုရင် Text မာ ၂ ံိုားပ က ်တယ်။ ဒြီတတာဲ့ length 3 ရတဲ့ str ို့ တူစရာ

အတ ကာင်ားမရတတာဲ့ ို ရပ် ိုက်တယ်။ ဘယ်အခ ်ားထ တက


ို ်မ သခ င်ရင်

Length(Text) – Length(str) = 7 – 3 = 4 အခ ်ားထပ တက


ို ်မာ ြစ်ပါတယ်။

စိုစိုတပါင်ား ဘယ်နစ်ကကမ်တိုက်ရသ ဆိုတာ trace table ရွေ့ တ ောက်ဆံိုား column က တ ်ြိုားတတွေ

တပါင်ား ကညဲ့်ရတအာင်

1 + 1 + 1+ 3 + 1 = 7 ကကမ်တက
ို ်ပပြီားမ မတတွေွေ့ဘူား ဆိုတဲ့ အတ ြထွေက်ပါတယ်။

တ ောက်တစ်ခို တွေက် ကညဲ့်ရတအာင်။ အရည်ရင်ားမ ပတတာဲ့ပါဘူား။

Text = “ababaaba…..”

Str = “aaba”

တက
ို ်တဲ့ အကကမ် စိုစိုတပါင်ား = 2 + 1 + 2 + 1 + 4 = 10 ြစ်ပါတယ်။ Text ရွေ့ အခ ်ား ံပါတ် 4 ကတ

စတိုက်တဲ့ အခ ်မာ တတွေွေ့သွောားတာ ြစ် ိုို့ ဆက်တိုက်စရာ မ ိုတတာဲ့ပါဘူား။

တက
ို တဲေ့ အကကမအလရအတွက တွကကကညေ့ကကရလအာင။

1. Text = (cd)10 , str = “aaba” ((cd)10 ဆိုတာ “cdcdcdcdcdcdcdcdcdcd” ဆိုပပြီား cd ၁၀ ခါ

တရားတာ ြစ်ပါတယ်။)

2. Text = (cd)10 , str = “cdc” ((cd)10 ဆိုတာ “cdcdcdcdcdcdcdcdcdcd” ဆိုပပြီား cd ၁၀ ခါ

တရားတာ ြစ်ပါတယ်။)

3. Text = a20 , str = aaaae

166 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Word Count Algorithm

မူရင်ား string Text ထက သူရာခ င်တဲ့ string, str ဘယ်နစ်ကကမ်ပါ တရတွေက်မာ ြစ်ပါတယ်။

Algorithm: Word Count

/*Count the occurrence of str in Text*/

1. countOccurrence(Text, str)
2. Set count = 0
3. Text = toUpper(Text) /*can also use toLower(Text)
4. str = toUpper(str)
5. Set I = INDEX(Text, str,0)
6. Repeat while I!=-1:
7. count = count + 1
8. I = INDEX(Text, str, I + 1)
9. End of Loop
10. Return count

ထံိုားစံအတင
ို ်ား trace ိုက်ပါမယ်။

Time = countOccurrence(“Life is beauty, admire it. Life is a dream, realize it. Life is a

challenge, meet it.”, “life”)

Line အလိုပလိုပပို Count

1 Text = “Life is beauty, admire it. Life is a dream, realize it. Life is a

challenge, meet it.”

str = “life”

2 count = 0 0

167 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

3 Text = toUpper(Text)

Text = “LIFE IS BEAUTY, ADMIRE IT. LIFE IS A DREAM, REALIZE IT.

LIFE IS A CHALLENGE, MEET IT.”

ဒြီတ ရာမာ toLower(Text) ကိုသံိုား ည်ားရပါတယ်။ အဓကကတတာဲ့ Text ို့

str တူသွောားြို့ပ
ို ပ
ို ါတယ်။ တစ်ခိုကို အကကြီားတ ပာင်ားရင် က ်တစ်ခို ည်ား

အကကြီားတ ပာင်ားပါ။ တစ်ခိုကို အတသားတ ပာင်ားရင် က ်တစ်ခိုကို ည်ား

အတသားတ ပာင်ားပါ။ ဒါမ နစ်ခို တူမာပါ။ မဟိုတ်ရင် စာ ံိုားခ င်ားတတာဲ့တတ


ူ ယ်

သတ
ိုို့ သာ် တစ်ခိုက အတသား၊ တစ်ခိုက အကကြီားဆို မတူဘူား ရာမတတွေွေ့ဘူား

ြစ်သွောားပါမယ်။

4 str = toUpper(str)

str = toUpper(“life”) = LIFE

Text ကို အကကြီားတ ပာင်ားထာား ိုို့ သူူ့ကို ည်ား အကကြီားတ ပာင်ားပါတယ်။

5 I = INDEX (Text, str) = 0

6 I != -1 → 0 != -1 ဆိုတတာဲ့ condition မ တ
် အ
ဲ့ တွေက် while ရွေ့ body ကို

အ ိုပ် ိုပပ
် ါမယ်။

7 Line 6 မာ index (I) ဟာ -1 ို့ မညြီ ိုို့ ဝင် ာတာ ြစ် ိုို့ 1

တစ်ကကမ်တတွေွေ့တအ
ဲ့ တွေက် count ကို ၁ တိုားပါတယ်။

count = count + 1

8 I = INDEX (Text, str, I+1)

0 ခ ်ားမာ တတွေွေ့တာကို count ိုပ်ပပြီားပပြီ ြစ် ိုို့ သူရွေ့ တ ောက်တစ်ခ ်ား 1

အခ ်ားကတ စပပြီား ရာမာ ြစ်ပါတယ်။

168 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

I = INDEX(Text, str, 1) =27

ဒါက while loop ရွေ့ update ြစ်ပါတယ်။ ဘာတ ကာငဲ့် ဆိုရင် while loop

မာ စစ်ထာားတဲ့ I တ ်ြိုား တ ပာင်ားတပား ိုက်တာ ြစ် ိုို့ပါ။

9 End of loop ဆိုတတာဲ့ while ရွေ့ condtion ကို ပ ်တက်ပါမယ်။

6 I != -1 → 27 != -1 ဆိုတတာဲ့ condition မ တ
် အ
ဲ့ တွေက် while ရွေ့ body ကို

အ ိုပ် ိုပပ
် ါမယ်။

7 Line 6 မာ index (I) ဟာ -1 ို့ မညြီ ိုို့ ဝင် ာတာ ြစ် ိုို့ 2

တစ်ကကမ်တတွေွေ့တအ
ဲ့ တွေက် count ကို ၁ တိုားပါတယ်။

count = count + 1

8 I = INDEX (Text, str, I+1)

27 ခ ်ားမာ တတွေွေ့တာကို count ိုပ်ပပြီားပပြီ ြစ် ိုို့ သူရွေ့ တ ောက်တစ်ခ ်ား 28

အခ ်ားကတ စပပြီား ရာမာ ြစ်ပါတယ်။

I = INDEX(Text, str, 28) =56

ဒါက while loop ရွေ့ update ြစ်ပါတယ်။ ဘာတ ကာငဲ့် ဆိုရင် while loop

မာ စစ်ထာားတဲ့ I တ ်ြိုား တ ပာင်ားတပား ိုက်တာ ြစ် ိုို့ပါ။

9 End of loop ဆိုတတာဲ့ while ရွေ့ condtion ကို ပ ်တက်ပါမယ်။

6 I != -1 → 56 != -1 ဆိုတတာဲ့ condition မ တ
် အ
ဲ့ တွေက် while ရွေ့ body ကို

အ ိုပ် ိုပပ
် ါမယ်။

7 Line 6 မာ index (I) ဟာ -1 ို့ မညြီ ိုို့ ဝင် ာတာ ြစ် ိုို့ 3

တစ်ကကမ်တတွေွေ့တအ
ဲ့ တွေက် count ကို ၁ တိုားပါတယ်။

count = count + 1

169 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

8 I = INDEX (Text, str, I+1)

56 ခ ်ားမာ တတွေွေ့တာကို count ိုပ်ပပြီားပပြီ ြစ် ိုို့ သူရွေ့ တ ောက်တစ်ခ ်ား 57

အခ ်ားကတ စပပြီား ရာမာ ြစ်ပါတယ်။

I = INDEX(Text, str, 57) =-1

ဒါက while loop ရွေ့ update ြစ်ပါတယ်။ ဘာတ ကာငဲ့် ဆိုရင် while loop

မာ စစ်ထာားတဲ့ I တ ်ြိုား တ ပာင်ားတပား ိုက်တာ ြစ် ိုို့ပါ။

9 End of loop ဆိုတတာဲ့ while ရွေ့ condtion ကို ပ ်တက်ပါမယ်။

6 I != -1 → -1 != -1 ဆိုတတာဲ့ condition မာားသွောားတအ


ဲ့ တွေက် end of loop

အ ပင်ြက် line 10 ကိုသွောားပါမယ်။

10 Return count ဆိုတတာဲ့ return 3 ဆိုပပြီား function call တခေါ်တဲ့ တ ရာကို

return ပ ်ပပြီား function ထက ထွေက်သွောားမာ ြစ်ပါတယ်။

count = countOccurrence(“abcdeabcefabcdzabzy”, “bc”) ကို trace ိုက်ပါ။

ဒြီတ ာက်ဆိုရင် String ကို ောား ည်သတဘာတပါက်တ ာက်ပပြီထင်ပါတယ်။

ဒြီမာပ ရပ် ိုက်ပါတတာဲ့မယ်။

170 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

အခန်း (၁၂)

Array အခ ခခံ နှင Basic Algorithms

Array ဆိုတာ

အရင် တုန််းကတတ ော့ array ဆုတ တူညီတော့ data type တတွေ စုထ ်းတ ကု array

လုို့တ ေါ်ပါတယ်။ ဆုလုတ က integer array ဆု integer တတွေ ျည််း တန််းစီပပီ်း သမ််းလုို့ရတယ်။ array

က အ န််း 5 န််းယူထ ်းရင် integer 5 လု်း သမ််းလုို့ရတယ်တပါ ော့။ array က အ န််း 100 ယူထ ်းရင်

integer အလု်း 100 သမ််းလုို့ရတယ်တပါ ော့။ ဒီလုပါပ double array ဆု double တတွေ ျည််း

သမ််းလုို့ရပါတယ်။ character array ဆုရင် character တတွေ ျည််း တန််းစီပပီ်း သမ််းလုို့ရပါတယ်။

ဒါတ က ငော့်လည််း string ဟ character တတွေ ျည််း တန််းစီပပီ်း သမ််းတ ဖြစ်လုို့ string ကု character

array လုို့လည််း တဖပ ကတ ဖြစ်ပါတယ်။

သတ
ုို့ သ ် ဒီတနို့တ တ်မ တတ ော့ array ဟ တူညီတော့ data type တတွေပ သမ််းလုို့ရတ

မဟုတတ
် တ ော့ပ မတူညီတော့ data type တတွေကုပါ စုစည််း သမ််းဆည််းလုို့ရတနပါပပီ။ ဘယ်လုပ ရတနရတန

array ကုတတ ော့ ဒီတနို့အ ျန်ထ တူညီတော့ data type တတွေ သမ််းဆည််းြို့ု အတွေက် အသု်းဖပြု ကတ

မျ ်းပါတယ်။

ပပီ်းတတ ော့ Java လုမျြု်း programming language တတွေမ array အ န််းနပါတ် index ဟ

auto သတ်မတ်တပ်းတယ်။ 0 ကစတယ်။ သတ


ုို့ သ ် တ ျြုျို့ language တတွေမ တတ ော့ အ န််းနပါတ်ဟ

ကုယက် ကြုက်တ ထ ်းလုို့ရတယ်ဆုတ တရျို့မ တဖပ ော့ပပီ်းပါပပီ။ ဒါတ က ငော့် array ရျို့ length (array

အ န််း ဘယ်နစ် န််းရသလဆုတ ) တွေက် ျင်ရင်

171 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Length = UB – LB + 1

UB ဆုတ upper bound, LB ဆုတ lower bound ပါ။ ဒီပတ


ု သနည််းဟ မထူ်းဆန််းပါဘူ်း။

သ ္ျ န််းမ ကန််းတစ် ု နို့ တစ် ုအ က ်း ကန််းဘယ်နစ်လု်းရသလဆုတ တွေက်တော့ ပတ


ု သနည််းပါပ။

0 Ko Ko

1 Ko Let

2 Nyi Nyi

UB = 2, LB = 0

Length = UB – LB + 1 = 2 – 0 + 1 = 3

စုစုတပါင််း array န််း 3 န််းရပါတယ်။

5 Aye Aye

6 Bo Bo

… ….

87 Zaw Zaw

UB = 87, LB = 5

Length = UB – LB + 1 = 87 – 5 + 1 = 83

စုစုတပါင််း array န််း 83 န််းရပါတယ်။

အ ု နမူနာ ဖပထ ်းတော့ array ၂ ုလု်းဟ စ သ ်းတတွေသမ််းထ ်းတ ဖြစ်လုို့ String data type array

တတွေပဖြစ်ပါတယ်။

172 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Representation of Array in Memory

Linear Array

Linear array ဆုတ one-dimensional array ကုတဖပ တ ပါ။ ကျွန်မတို့က


ု သ array ကု

ယူသု်းရင် 0,1,2 စတော့ index တလ်းနို့ အလွေယတ


် ကူ ယူသု်းတ ဖြစ်တပမော့ တနာက်ကွေယ်ကတန

ဘယ်လုတွေက် ျက် လုပ်ကုင်သွေ ်းသလဆုတ တလ်း တစ် ျက် ကညော့် ကညော့် ကရတအ င်။

LOC (LA[i]) = Base(lA) + w * ( i – lower bound)

LOC (LA[i]) – location of array LA[i]

Base (LA) – အ ်းကစ ်းပပြုငပ


် ရ
ွေ လုို့ အ ်းကစ ်းအြွေျို့ တစ်ြွေျို့လ မယ်၊ န််းမကျယ်ကကီ်းထမ စုပပီ်း

တနထုင် ကရမယ်။ ကုယ်က အ န််းထ ဝင်လ တော့ အ ျန်မ ကုယ်တ


ော့ ရျို့မ သူငယ် ျင််းအ ျြုျို့က တနရ

ယူပပီ်းသွေ ်းပပီဆုရင် ကုယ်က သူတို့ု တဘ်းကတနဆက်ပပီ်း တနရ ယူရပါမယ်။ အဒါကု ကုယ်ရ


ော့ ျို့ base

address လုို့ တဖပ လုို့ရပါတယ်။ Memory ဆုတ လည််း အဒီလုပါပ။ တရျို့မ တနရ ယူထ ်းတ

တတွေရရင် တရ က်တော့တနရ ကတနစပပီ်း ဆက်တနရ ယူရပါတယ်။ array တစ် ု တဆ က်လုက်တယ်၊

Memory တပေါ်က လွေတ်တော့တနရ ကတန စပပီ်း တနရ ယူရတယ်၊ အဒါ array ရျို့ base address ပါပ။

W - ကတတ ော့ number of bytes ပါ။ data type တစ် ုမ ဘယ်တလ က် byte တနရ ယူမလဆုတ

language က ကကြုတင် သတ်မတ်ထ ်းတ ရပါတယ်။ Java မ ဆုရင် char က 1 byte, int က 4

bytes နို့ double က 4 bytes စီတနရ ယူပါတယ်။

i – index အ န််းနပါတ်ဖြစ်ပါတယ်။

Lower bound - ကတတ ော့ အတပေါ်မ တဖပ ော့သလု စတော့ အ န််းနပါတ်ဖြစ်ပါတယ်။

int arr[]={10,20,30,40,50};

173 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

ဒါကတတ ော့ Java နည််းနို့ array တဆ က်ဖပထ ်းတ ဖြစ်ပါတယ်။ int data type ပါ။ array name or

variable name ကု arr လုို့ တပ်းထ ်းပါတယ်။ one-dimensional array ဖြစ်တအ


ော့ တွေက် arr ရျို့

တနာက်မ []-တထ ငော့်ကွေင််း တစ် ုလုက်ပါတယ်။ Array မ {} - တွေန်က


ို့ ွေင််းနို့ values တတွေတန််းစီ

ထညော့်ရပါတယ်။ တရျို့ဆု်း value 10 က 0 န််း၊ 20 က 1 အ န််း စသည်ဖြငော့် တအ က်မ ဖပထ ်းသလု

တနရ ယူသွေ ်းမ ဖြစ်ပါတယ်။

0 10 1000

1 20 1004

2 30 1008

3 40 1012

4 50 1016

ပမ
ု 0,1,2,3,4 က ကျွန်မတို့ု ယူသု်းမညော့် အ န်နပါတ် index, 1000,1004 စတ တတွေဟ တကယော့်

memory address တတွေဖြစ်ပါတယ်။ 1000 ဟ base address ဖြစ်ပါမယ်။ int data type ဖြစ်လုို့

တစ် န််းကု 4 bytes ယူမ ဖြစ်ပါတယ်။

အ န််းနပါတ် 3 ရျို့ memory address ကု တွေက် ကညော့်ပါမယ်။

LOC (LA[i]) = Base(lA) + w * ( i – lower bound)

LOC (arr[3]) = Base(arr) + 4 * ( 3 – 0) = 1000 + 4*3 = 1012

50 ရျို့ memory address ကု တွေက် ကညော့် ကညော့်ပါ။

174 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Multi-Dimensional Array

Multi-dimensional array ဆုတ two-dimensional နို့ အထက်ကု တ ေါ်တ ဖြစ်ပါတယ်။

Multi-dimensional array ထကမ Row နို့ Column ဆုတော့ Index 2 ု ရတော့ two-dimensional array

ရျို့ တနာက်ကွေယ်ကတန memory address ကု ဘယ်လုတွေက် ျက် လုပ်ကုင်သွေ ်းသလဆုတ တလ်း

တစ် ျက် ကညော့် ကညော့် ကရတအ င်။ အဒီမ ၂ မျြု်း ရပါတယ်။ Column ကုဦ်းစ ်းတပ်းတွေက်တော့ column-

major နို့ Row ကုဦ်းစ ်းတပ်းတွေက်တော့ row-major တို့ပ


ု ဖြစ်ပါတယ်။ Java အပါအဝင် language

တတ ်တတ ်မျ ်းမျ ်းကတတ ော့ row ကုဦ်းစ ်းတပ်းတော့ row-major တတွေပဖြစ်ပါတယ်။

Elements Elements
(0,0) (0,0)
(1,0) Column0 (0,1) Row 0
(2,0) (0,2)
(0,1) (1,0)
(1,1) Column1 (1,1) Row1
(2,1) (1,2)
(0,2) (2,0)
(1,2) Column2 (2,1) Row2
(2,2) (2,2)
ပထမပုကတတ ော့ column-major တနရ ယူသွေ ်းတ ဖပတော့ပု ဖြစ်ပပီ်း၊ ဒုတယပုကတတ ော့ row-major

တနရ ယူသွေ ်းတ ဖပတော့ပု ဖြစ်ပါတယ်။

Column-major

LOC( A[ R,C]) = Base (A) + w [M * (C- Lc) + (R-Lr)]

Row-major

LOC( A[ R,C]) = Base (A) + w [N * (R-Lr) + (C-Lc)]

175 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

M ဆုတ column တစ် မ


ု ရတော့ row အတရအတွေက်ဖြစ်ပါတယ်။ N ဆုတ ကတတ ော့ row တစ် ုမ

ရတော့ column အတရအတွေက် ဖြစ်ပါတယ်။ Lc ဆုတ column ရျို့ lower bound, Lr ဆုတ row ရျို့

lower bound ဖြစ်ပါတယ်။

0 1 2 3 4

0 10 20 30 40 50

1 60 70 80 90 100

2 110 120 130 140 150

Row-major နို့ ပ တဖပ ကညော့် ကရတအ င်။ array အမည်ကု A လုို့ပထ ်းပါတတ ော့။ int data type array

ဖြစ်တယ်။ int ဖြစ်လုို့ တစ် န််းကု 4 bytes စီတနရ ယူမယ်။ row 3 ု colum 4 ုဖြစ်လုို့ 3*4 array လုို့

တဖပ လုို့ရပါတယ်။ Base address က 500 ဆုပါတတ ော့။ ဒါဆုရင် row-major နို့ 140 ဆုတော့ value ရျို့

memory address ကု တွေက် ကညော့်ရတအ င်။ 140 ဆုတတ ော့ A[2][3] ဖြစ်ပါတယ်။

LOC( A[ R,C]) = Base (A) + w [N * (R-Lr) + (C-Lc)]

LOC(A[2,3])= 500 + 4 * ( 5 * (2-0) + (3-0)) = 500 + 4* (10+3) = 500+ 4* 13 = 500 + 52 = 552

အတဖြကု စစ်လုို့ရတအ င် တအ က်မ memory address ကု ဇယ ်းတလ်းနို့ ဖပတပ်းထ ်းပါတယ်။

0 1 2 3 4

0 500 504 508 512 516

1 520 524 528 532 536

2 540 544 548 552 556

176 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

အ န််းနပါတ် 90 ဆုတော့ value ရျို့ memory address ကု row-major တရ ၊ column-major နို့ပါ

တွေက် ကညော့် ကညော့်ပါ။

Traversing a Linear Array

Traversing a Linear Array ဆုတ array ကု အ န််းတပါက်တစော့ တရ က်တအ င်

သွေ ်းတ ဖြစ်ပါတယ်။ တရ က်တော့ အ ျန်မ တတ ော့ output ထုတ်တ ဖြစ်ဖြစ်၊ တွေက်တ ဖြစ်ဖြစ် မမ

နစ်သက်ရ လုပ်လရ
ုို့ ပါတယ်။

0 Ko Ko 3 CST

1 Ko Let 4 CS

2 Nyi Nyi 5 CT

နမူနာ ဖပထ ်းတော့ array 2 ုကု ကညော့် ကညော့်ပါ။ ပထမ array က အ န််းနပါတ် 0 ကတန 2

ထသွေ ်းတယ်။ ဒုတယ array က အ န််းနို့ပါတ် 3 ကတန 5 ထသွေ ်းတယ်။ ဘယ်လုပသွေ ်းသွေ ်း

ခ ြုပပီ်းတဖပ ရရင် lower bound ကတန upper bound ထ သွေ ်းမယ်ဆုရင် အ န််းတပါက်တစော့

တရ က်မ ဖြစ်ပါတယ်။

ပထမ array မ ဆု LB(lower bound) က 0, UB(upper bound) က 2, ဒီတတ ော့ LB 0

ကတနစမယ်၊ UB တရ က်တော့ အထသွေ ်းမယ်၊ 0 န််းပပီ်းရင် 1 အ န််းဆုတော့အတွေက် တစ်ကကမ်ပပီ်းတုင််း

အ န််းနပါတ်ကု 1 တ်းု ပပီ်း update လုပ်မယ်။

177 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

ဒုတယ array မ ဆု LB(lower bound) က 3, UB(upper bound) က 5, ဒီတတ ော့ LB 3

ကတနစမယ်၊ UB တရ က်တော့ အထသွေ ်းမယ်၊ 3 န််းပပီ်းရင် 4 အ န််းဆုတော့အတွေက် တစ်ကကမ်ပပီ်းတုင််း

အ န််းနပါတ်ကု 1 တ်းု ပပီ်း update လုပ်မယ်။

Algorithm: Traversing a linear array

1. Set index = LB
2. Repeat while index <= UB:
3. Do something with LA[index]
4. Index = index + 1
5. End of Loop

ဒါက while loop နို့ တရ်းတ ဖြစ်ပပီ်း for loop နို့ ထပ်ပပီ်း တရ်းပါ ော့မယ်။

Algorithm: Traversing a linear array 2

1. Repeat for index = LB to UB by 1:


2. Do something with LA[index]
3. End of Loop

ဒီတနရ ထ ြတ်လ ပပီဆုတတ ော့ ဒီ traversing algorithm တလ က်ကတတ ော့ ကတလ်းကစ ်းသတလ က်

ဖြစ်တနတလ က်ပါပပီ။ ဒီတတ ော့ trace လုက်မဖပတတ ော့ပါဘူ်း။

ဒါခ ်းခတွေ ခ ကျငကကညကကရခအာင။

တမ င်တမ င်ဟ 2000 န


ု စ်ကတနပပီ်း 2021 ုနစ်အထ သူရျို့ ဝင်တငွေတတွေကု one-dimensional

array(linear array) နို့ သမ််းထ ်းတယ်။ အ န််းနပါတ်တတွေကု ုနစ်တတွေတပ်းထ ်းတ ဖြစ်လုို့

178 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

အ န််းနပါတ်က 2000 ကစပပီ်း 2021 အထ သွေ ်းပါတယ်။ အထမ တတ ော့ value အတနနို့ သူူ့ရျို့

ဝင်တငွေစ ရင််းကု သမ််းဆည််းထ ်းပါတယ်။

1. Array ရျို့ LB, UB နငော့် length ကုရ ပါ။

2. အတပေါ်က traversing algorithm ကု အသု်းဖပြုပပီ်း 2000 ကတန 2021 အထ၊ ုနစ် နငော့် ဝင်တငွေကု

“2000:1000000” ဆုတော့ ုနစ်နို့ ဝင်တငွေ က ်း ‘:’ တလ်းဖ ်းထ ်းတော့ ပစ


ု နို့ output ထုတ်ဖပတပ်းတော့

algorithm ကုတရ်းပါ။

3. အတပေါ်က traversing algorithm နငော့် conditional statement ကု အသု်းဖပြုပပီ်း 100

သန််းတကျ ် ဝင်တငွေရတော့ နစ်တတွေကု output ထုတ်ဖပတပ်းတော့ algorithm ကုတရ်းပါ။

4. အတပေါ်က traversing algorithm နငော့် conditional statement ကု အသု်းဖပြုပပီ်း 100

သန််းတကျ ် ဝင်တငွေရတော့ နစ်အတရအတွေက်ကု count လုပ်တပ်းတော့ algorithm ကုတရ်းပါ။

Inserting into Linear Array

Linear Array ရျို့ ကုယက် ကြုက်တော့ တနရ မ ကုယထ


် ညော့် ျင်တော့ data တလ်း သွေ ်းထညော့်တ ကု

စဉ််းစ ်း ကညော့် ကရတအ င်။

0 Apple 0 Apple

1 Banana 1 Banana
အ န််းနပါတ် 2
2 3
mango တနရ မ 2 Mango 2 Lemon
3
Lemon ကု
3 Pineapple 1 3 Mango
လ ထညော့် ျင်တ

ဖြစ်ပါတယ် 4 Pineapple

179 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

စစ ျင််း 0 to 3 ဆုပပီ်း array န််း 4 န််းရပါတယ်။ အဒီထက 2 အ န််း Mango ရျို့ တနရ ကု

Lemon လ ပပီ်း ထညော့် ျင်တ ဖြစ်ပါတယ်။ ဒီတတ ော့ တပ်းဝင်လရ


ုို့ တအ င် ဝင် ျင်တော့အ န််းနို့ သူရျို့

တနာက်အ န််းတတွေဟ တအ က်ကု တစ် န််းစီ ဆင််းတပ်းရမ ဖြစ်ပါတယ်။ အဒီမ Mango ကု အရင်

တပ်းဆင််း ော့ရင် Pineapple တနရ မ Mango ဝင်သွေ ်းတတ ော့ overwrite ဖြစ်ပပီ်း Pineapple

တပျ က်သွေ ်းမ ဖြစ်ပါတယ်။ ဒါတ က ငော့် တရျို့မယ် ဆုရင် တနာက်ဆု်းအ န််းကတန စတရျို့ရပါတယ်။

ပမ
ု ဖပထ ်းတအ
ော့ တင
ု ််းဆု Pineapple အရင်တရျို့၊ ပပီ်းမ Pineapple တနရ ကု Mango တရျို့

ရမ ဖြစ်ပါတယ်။ အ န််းနပါတ် 2 (Mango) ကုတရျို့တ ဟ ထညော့် ျင်တော့ အ န််းဖြစ်တော့အတွေက်၊

ထညော့် ျင်တော့ န််းလွေတ်သွေ ်းပပီဖြစ်လုို့ အဒီ အ န််းမ ထညော့် ျင်တော့ Lemon ကု ထညော့်လုက်ပါတယ်။

ဆုလုတ ကတတ ော့

1. တနာက်ဆု်းအ န််းကတနပပီ်း ထညော့် ျင်တော့ အ န််းတရ က်သည်အထ တအ က်ကု တစ် န််း

ျင််းစီ ဆင််းတပ်းရပါမယ်။

2. ပပီ်းမ ထညော့် ျင်တော့ အ န််းထကု ထညော့် ျင်တော့ တန်ြု်း ထညော့်တပ်းလုက်ရမ ဖြစ်ပါတယ်။

Algorithm: Inserting into linear array

1. inserAt(LA, UB, II, IITEM)


2. /*LA – linear array, UB – upper bound, II – index to insert, IITME – Item to insert */
3. Set index = UB
4. Repeat while index >= II:
5. LA[index+1] = LA [index]
6. Index = index - 1
7. End of Loop
8. LA [II] = IITEM
9. UB = UB + 1

180 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Insert လုပ်ရန် သြလ


ုို့ ုတ က ထညော့် ျင်တော့ array ရယ်၊ ထညော့် ျင်တော့ အ န််းနပါတ်၊ ထညော့် ျင်တော့

တန်ြု်း၊ တနာက်ဆု်းအ န််းနပါတ် တို့ပ


ု ဖြစ်ပါတယ်။

ဒါက while loop နို့ တရ်းတ ဖြစ်ပပီ်း for loop နို့ကတတ ော့ စ ြတ်တနသူ အတရ်းကျငော့်ရမ ဖြစ်ပါတယ်။

Anna Brown David Emely Ford


0 1 2 3 4
Array LA ကု ပမ
ု န်ဖပတနကျ တထ င်လုက်ကတန အလျ ်းလုက် ဖပလုက်လုို့ မျက်စလည်

မသွေ ်းပါနို့အု်း။ ဘယ်လု ဖပဖပ အတူတူပါပ။ 2 အ န််းတနရ မ Charles ကု ထညော့် ျင်တယ် ဆုပါတတ ော့

trace လုက် ကညော့်ရတအ င်။

Array name က LA ပ ဆုပါတတ ော့၊ တနာက်ဆု်းအ န််းနပါတ် UB = 4, ထညော့် ျင်တော့ အ န််း II = 2,

ထညော့် ျင်တော့ IITEM = Charles။

Line Index အ ိုပ ိုပပံို LA

1 UB = 4, II = 2, IITEM = Charles Anna, Brown,

David, Emely,

Ford

2 Comment ဆုတတ ော့ အလုပ်မလုပ်ဘူ်း။

3 4 index = UB

တနာက်ဆု်းအ န််းကတနပပီ်း စတရျို့မ မုို့ index ထကု UB ထည်ော့

4 index >= II ဆုတတ ော့ 4 >= 2 ဆုတတ ော့ while condition

မန်တယ်၊ ဒီတတ ော့ while ရျို့ body ကု အလုပ်လုပပ


် ါမယ်။

181 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

5 LA[index+1] = LA [index] Anna, Brown,

LA[5] = LA [4] David, Emely,

LA[5]=Ford Ford, Ford

6 3 index = Index -1

တနာက်ဆု်းအ န််း တရျို့ပပီ်း အတပေါ်က အ န််း ဆက်တရျို့မ

ဖြစ်လုို့ index ကု 1 တလျ ော့ပပီ်း condition စစ်ြို့ု update

လုပ်တ ဖြစ်ပါတယ်။

7 End of loop ဆုတတ ော့ while condition ဖြစ်တော့ line 4

ကသ
ု ွေ ်းပါမယ်။

4 index >= II ဆုတတ ော့ 3 >= 2 ဆုတတ ော့ while condition

မန်တယ်၊ ဒီတတ ော့ while ရျို့ body ကု အလုပ်လုပပ


် ါမယ်။

5 LA[index+1] = LA [index] Anna, Brown,

LA[4] = LA [3] David, Emely,

LA[4]=Emely Emely, Ford

6 2 index = index -1

ထညော့် ျင်တော့ အ န််းတရ က်သည်အထ ဆက်ပပီ်းတရျို့မ

ဖြစ်လုို့ index ကု 1 တလျ ော့ပပီ်း condition စစ်ြို့ု update

လုပ်တ ဖြစ်ပါတယ်။

7 End of loop ဆုတတ ော့ while condition ဖြစ်တော့ line 4

ကုသွေ ်းပါမယ်။

182 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

4 index >= II ဆုတတ ော့ 2 >= 2 ဆုတတ ော့ while condition

မန်တယ်၊ ဒီတတ ော့ while ရျို့ body ကု အလုပ်လုပပ


် ါမယ်။

5 LA[index+1] = LA [index] Anna, Brown,

LA[3] = LA [2], David, David,

LA[3]=David Emely, Ford

6 1 index = Index -1

ထညော့် ျင်တော့ အ န််းတရ က်သည်အထ ဆက်ပပီ်းတရျို့မ

ဖြစ်လုို့ index ကု 1 တလျ ော့ပပီ်း condition စစ်ြို့ု update

လုပ်တ ဖြစ်ပါတယ်။

7 End of loop ဆုတတ ော့ while condition ဖြစ်တော့ line 4

ကုသွေ ်းပါမယ်။

4 index >= II ဆုတတ ော့ 1 >= 2 ဆုတတ ော့ while condition

မ ်းသွေ ်းပပီ ဖြစ်လုို့ end of loop ရျို့ အဖပင် line 8 ကု သွေ ်းမ

ဖြစ်ပါတယ်။

8 LA [II] = IITEM, LA[2]=Charles Anna, Brown,

တဘ်းက LA အ န််းကု ကညော့်လုက်ပါ၊ ထညော့် ျင်တော့အတင


ု ််း Charles, David,

ထညော့်ပပီ်းသွေ ်းပပီ ဖြစ်ပါတယ်။ Emely, Ford

Trace ိုကကကညပါ။

LA => {AA, BB, DD, EE, FF, GG} ထကု CC ကု ထညော့် ျင်ပါတယ်။ ငယ်စဉ်ကကီ်း လုက် စီပပီ်းသ ်း

ဖြစ် ျင်တ ဖြစ်လုို့ ဘယ်အ န််းမ CC ကု ထညော့်သငော့်သလ ဆု်းဖြတ်ပပီ်း trace လုက်ပါ။

183 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Deleting from a Linear Array

Linear Array ရျို့ ကုယက် ကြုက်တော့ တနရ က value ကုြျက်တ တလ်း စဉ််းစ ်း ကညော့် ကရတအ င်။

0 Apple 0 Apple

1 Banana 1 Banana

2 Lemon 2 Mango
1
အ န််းနပါတ် 2
3 Mango 3 Pineapple
Lemon ကု
ြျက် ျင်တ 4 Pineapple 2 4
3
ဖြစ်ပါတယ်။

စစ ျင််း 0 to 4 ဆုပပီ်း array န််း 4 န််းရပါတယ်။ အဒီထက 2 အ န််း Lemon ကု ြျက် ျင်တ

ဖြစ်လုို့ Lemon ဆုတော့ 2 အ န််းတနရ မ 3 အ န််းက တန်ြ်းု Mango က အတပေါ်တက်ပပီ်း

ဝင်လ ရမ ဖြစ်ပါတယ်။

ဒီတတ ော့ 2 အ န််းြျက် ျင်ရင် 2 တနရ ကု (ြျက် ျင်တော့ အ န််းနပါတ် + 1) 3 က အစ ်းဝင်

လ ရမ ဖြစ်ပါတယ်။ ြျက် ျင်တော့ အ န််းနပါတ် + 1 တနရ ကု ြျက် ျင်တော့အ န််းနပါတ် + 2 က

အစ ်းဝင်လ ရမ ဖြစ်ပါတယ်။တနာက်ဆု်းအ န််းတရ က်သည်အထ အတပေါ်တက်ရမ ဖြစ်ပါတယ်။

ပတ
ု လ်းမ နပါတ်တလ်းတတွေတပ်ဖပထ ်းပါတယ်။ ကညော့် ကညော့်ပါ။

တဖပ ရမယ်ဆုရင် insert က ထညော့်တ ဖြစ်လုို့ တနရ လွေတ်တအ င် တအ က်ဆင််းတပ်းရတ

ဖြစ်ပပီ်း၊ delete ကတတ ော့ ြျက်တ ဖြစ်လုို့ ြျက် ျင်တော့အ န််းနပါတ် + ၁ ကတနပပီ်း တနာက်ဆု်း

အ န််း(UB) တရ က်သည်အထ အတပေါ်တက်ရတ ဖြစ်ပါတယ်။ Insert ကတတ ော့ အ န််းတစ် န််း

184 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

တ်းု လ တ (UB+1) ဖြစ်ပပီ်း၊ delete ကတတ ော့ အ န််းတစ် န််းတလျ ော့သွေ ်းတ ဖြစ်လုို့ အလုပ်လုပတ

ပပီ်းသွေ ်းရင် UB ကု ၁ နုတ်တပ်းရမ ဖြစ်ပါတယ်။

သြုို့ လုတ တတွေက array – LA, ြျက် ျင်တော့ အ န််းနပါတ် - DI, တနာက်ဆု်းအ န််းနပါတ် UB

ရယ် ဖြစ်ပါတယ်။

Algorithm: Deleing Form a Linear Array

1. deleteAt(LA, UB, DI)


2. /*LA – linear array, UB – Upper Bound, DI – index to delete */
3. Set index = DI
4. Repeat while index < UB:
5. LA[index] = LA [index+1]
6. Index = index + 1
7. End of Loop
8. UB = UB - 1

ဒါက while loop နို့ တရ်းတ ဖြစ်ပပီ်း for loop နို့ကတတ ော့ ြတ်တနသူ အတရ်းကျငော့်ရမ ဖြစ်ပါတယ်။

Anna Brown Charles David Emely

0 1 2 3 4

Charles ကု ြျက် ျင်တယ် ဆုပါတတ ော့ trace လုက် ကညော့်ရတအ င်။

Array name က LA ပ ဆုပါတတ ော့၊ တနာက်ဆု်းအ န််းနပါတ် UB = 4, ြျက် ျင်တော့ အ န််း DI = 2

Line Index အ ိုပ ိုပပံို LA

1 UB = 4, DI = 2 Anna, Brown, Charles, David, Emely

2 Comment ဆုတတ ော့ အလုပ်မလုပ်ဘူ်း။

185 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

3 2 index = DI = 2

4 index<UB

2 < 4 ဆုတတ ော့ while condtion မန်လုို့

while ရျို့ body ကု အလုပလ


် ုပ်မယ်။

5 LA[index] = LA [index+1] Anna, Brown, David, David, Emely

LA[2]= LA[3], LA[2]=David

6 3 index = index + 1

While loop ရျို့ update ဖြစ်ပါတယ်။

7 End of loop ဆုတတ ော့ while

condition line 4 ကု ဖပန်တက်ပါမယ်။

4 index< UB

3 < 4 ဆုတတ ော့ while condtion မန်လုို့

while ရျို့ body ကု အလုပလ


် ုပ်မယ်။

5 LA[index] = LA [index+1] Anna, Brown, David, Emely, Emely

LA[3]= LA[4], LA[3] = Emely

6 4 index = index + 1

While loop ရျို့ update ဖြစ်ပါတယ်။

7 End of loop ဆုတတ ော့ while

condition line 4 ကု ဖပန်တက်ပါမယ်။

4 index< UB

186 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

4 < 4 ဆုတတ ော့ while condtion

မ သွေ ်းပပီဖြစ်လုို့ end of loop ပပီ်း

တနာက်တစ်တ က င််း line 8 ကု

သွေ ်းပါမယ်။

8 UB = UB – 1 ဆုတ တစ် န််းတလျ ော့ Anna, Brown, David, Emely

လုက်တ ဖြစ်လုို့ LA အတဖြကု LA

column မ ကညော့်ပါ။

ဒီတနရ မ နည််းနည််းတလ်းထပ်ရင််း ျင်ပါတယ်။ ပထမဆု်း လုပ်ရမညော့်အလုပ်က DI + 1 အ န််းကု DI

ထ တရျို့ရမ ဖြစ်ပါတယ်။ အဒီမ Set index = DI လုို့ တရ်းလုက်တတ ော့ Index ဟ အလုပ်လုပရ
် မညော့်

အ န််း 2 ုအနက် ခရှှေ့အခန်းကို ယူ ိုကတ သခ ာ ြစပါတယ။ ဒီတတ ော့ သူူ့တနာက်အ န််းဖြစ်တော့

Index + 1 နို့ အလုပလ


် ုပ်ရတတ ော့မ ဖြစ်ပါတယ်။ Index ဟာ ခနောကဆံို်းအခန်း ြစတ UB

ထသွော်းမယဆိုရင Index + 1 ဟာ သွော်းစရာ ခနရာမရှခတာပါ ူ်း။ ဒါခကကာင Index ဟာ

တစခန်းခ ျာပပ်း <UB (UB ထကငယတအထ) ဆိုပပ်း ိုပထာ်းတာ ြစပါတယ။ ဒါမှ Index + 1 ဟာ

ခနောကဆံို်းအခန်း ြစမှာ ြစပါတယ။

Repeat while index < UB:

LA[index] = LA [index+1]

Index = index + 1

End of Loop

187 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

တကယ်လုို့ Index ဟ အလုပ်လုပရ


် မညော့် အ န််း ၂ ုအနက် တနာက်အ န််းကုယူ ော့မယ် ဆရ
ု င်

သူဟ သူူ့ရျို့ အတရျို့တစ် န််းထကု ထညော့်တပ်းရမ ဖြစ်ပါတယ်။ ဒါတ က ငော့် ြျက်မညော့်အ န််းရျို့

တနာက်တစ် န််းကု ြျက်မညော့်အ န််းထ ထညော့် ျင်တ ဖြစ်လုို့

Set Index = DI + 1

ဖြစ်ပါမယ်။ ပပီ်းတတ ော့ Index ဟ သူူ့တရျို့အ န််းနို့ အလုပ်လုပမ


် ဖြစ်တအ
ော့ တွေက် သူဟ

တနာက်ဆု်းအ န််းထ သွေ ်းလုို့ရမ ဖြစ်ပါတယ်။ ဒါတ က ငော့်

Repeat while index <= UB:

LA[index - 1] = LA [index]

Index = index + 1

End of Loop

ဆုပပီ်း ဖြစ်သွေ ်းမ ဖြစ်ပါတယ်။ တဖပ ျင်တ က ယ ုတရ်းလုက်တ နို့ algorithm ထမ တရ်းထ ်းတ နို့

အတူတူပ ဖြစ်ပါတယ်။ Index ကု အလုပ်လုပမ


် ညော့် အ န််း ၂ ုထက တရျို့အ န််းယူတ နို့

တနာက်အ န််းယူတ တလ်း ကွေသွေ ်းတ ဖြစ်ပါတယ်။ ဒါတ က ငော့် problem တစ် ုမ တဖြရင််းနည််း

မျြု်းစုရတယ်တဖပ တ ဖြစ်ပါတယ်။

ခအာကပါခတွေကို ခ ကျငကကညပါ။

1. Index ကု အလုပ်လုပမ
် ညော့်အ န််းထက တနာက်အ န််းကု ယူတော့ နည််းနို့ algorithm ကု

အစအဆု်း ဖပန်တရ်းတပ်းပါ။

2. နပါတ် ၁ မ ဖပန်တရ်းထ ်းတော့ algorithm ဖြငော့် LA => {AA, BB, CC, DD, EE, FF, GG} ထမ CC

ြျက်တ ကု trace လုက်ပါ။

188 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Linear Search Algorithm

Linear Search Algorithm ဆုတ array ထမ ကုယရ


် ျင်တော့ တန်ြု်းကု 0 န််း၊ 1 အ န််း၊ 2

အ န််း စသည်ဖြငော့် တစ် န််းပပီ်းတစ် န််း အစဉ်လုက် လုက်ပပီ်းရ တ ဖြစ်ပါတယ်။ ကုယရ


် ျင်တော့

တန်ြု်းနငော့် တရ က်တနတော့ အ န််းထကတန်ြု်း ညီ ော့တယ်ဆုရင် တတွေျို့တ ဖြစ်လုို့ အဒီ

တတွေျို့တအ
ော့ န််းနပါတ်ကု return ဖပန်တပ်းမ ဖြစ်ပါတယ်။ တနာက်ဆု်းအ န််းထ ရ မတတွေျို့ ော့ဘူ်း

ဆုရင်တတ ော့ မရတော့ အ န််းနပါတ်ဖြစ်တော့ -1 ကု return ဖပန်မ ဖြစ်ပါတယ်။ အ န််းနပါတ်ဟ 0 က

စတ တ က ငော့် အနှုတ်အ န််းနပါတ်မရတ ဖြစ်ပါတယ်။

Algorithm: Linear Search

1. linearSearch(LA, N, x)
2. /*LA – linear array, N – number of elements in array, x – value to search */
3. Set index = 0
4. Set found = -1
5. Repeat while index < N:
6. If LA[index] == x then:
7. Found = index
8. Index = index + 1
9. End of Loop
10. Return found

ဒီ algorithm ဟ အရင် algorithm တတွေနို့ မတူတ က UB ကု လက်မ ပ number of elements

လုို့တ ေါ်တော့ array အ န််းအတရအတွေက်ကု လက် ထ ်းတ ဖြစ်ပါတယ်။ UB(upper bound) ဆုတ

တနာက်ဆု်းအ န််းနပါတ်ဖြစ်ပါတယ်။ Number of elements က 10 ဆရ


ု င် array န််း 10

န််းရတယ်လုို့ ဆုလုတ ဖြစ်လုို့ အ န််းနပါတ်တတွေကတတ ော့ 0 to 9 ဖြစ်မယ်။ ဒီတတ ော့ Number of

elements(N) က 10 ဆုရင် UB - တနာက်ဆု်းအ န််းနပါတ်ဟ 9 ဖြစ်မ ဖြစ်ပါတယ်။ ဒါတ က ငော့် index

< N ဆုပပီ်း တနာက်ဆု်းအ န််းနပါတ်ထ ပတ်ထ ်းတ ဖြစ်ပါတယ်။

189 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

UB ကခံ ည်းရပါတယ။ ာခကကာင UB ကမခံပ N ကခံသ မစဉ်းစာ်းခနပါနဲ့။

Algorithm ခရ်းသူ စတကကြိုက ိုပ ိုဲ့ရပါတယ။

Trace လုက်ဖပပါ ော့မယ်။

LA => {10, 20, 30, 40, 50, 60}, X = 10, N = 6

Line Index အ ိုပ ိုပပံို

1,2,3,4 0 -1 Line 1 => LA => {10, 20, 30, 40, 50, 60}, X = 10, N = 6
Line 2 => comment ဆုတတ ော့ အလုပ်မလုပ်
Line 3 and 4 => index =0, found = -1

5 index < N ဆုတတ ော့ 0 < 6 ဆုတတ ော့မန်တယ်။ while condition မန်တတ ော့
while body ကု အလုပ်လုပပ
် ါမယ်။

6,7 0 If နို့ တတွေျို့သလ ်းဆုပပီ်း LA[index] == x ဆုပပီ်း စစ်ပါတယ်။ LA[0]== 10,


10 == 10 ဆုတတ ော့ မန်တယ်။ မန်တတ ော့ if တအ က်က စ တ က င််းကု
အလုပ်လုပမ
် ယ်။ found ထကု index ထညော့်တယ်။ found = 0
ဖြစ်မယ်။ဆုလုတ က 0 န််းမ အ န််းထက တန်ြု်းနို့ ရ ျင်တော့ တန်ြု်း x
ညီသွေ ်းတ ဖြစ်လုို့ တတွေျို့တယ်။ တတွေျို့လုို့ တတွေျို့တော့ အ န််းနပါတ် 0 ကု
found ထ သမ််းလုက်တ ဖြစ်ပါတယ်။

8 1 index = index + 1
index = 0 + 1 = 1
0 န််းပပီ်း 1 အ န််းရ မ ဖြစ်လုို့ အ န််းနပါတ်ကု 1 တ်းု တ update
လုပ်တ ဖြစ်ပါတယ်။

9 End of loop ဆုတတ ော့ condition ဆီ ဖပန်တက်မယ်။

5 index < N ဆုတတ ော့ 1 < 6 ဆုတတ ော့မန်တယ်။ while condition မန်တတ ော့
while body ကု အလုပ်လုပပ
် ါမယ်။

190 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

6,7 If နို့ တတွေျို့သလ ်းဆုပပီ်း LA[index] == x ဆုပပီ်း စစ်ပါတယ်။ LA[1]== 10,


20 == 10 ဆုတတ ော့ မ ်းတယ်။ မ ်းတတ ော့ if တအ က်က line 7 ကု
မလုပ်တတ ော့ပ တကျ ်သွေ ်းမယ်။

8 2 index = index + 1
index = 1 + 1 = 2
1 န််းပပီ်း 2 အ န််းရ မ ဖြစ်လုို့ အ န််းနပါတ်ကု 1 တ်းု တ update
လုပ်တ ဖြစ်ပါတယ်။

9 End of loop ဆုတတ ော့ condition ဆီ ဖပန်တက်မယ်။

5 index < N ဆုတတ ော့ 2 < 6 ဆုတတ ော့မန်တယ်။ while condition မန်တတ ော့
while body ကု အလုပ်လုပပ
် ါမယ်။

6,7 If နို့ တတွေျို့သလ ်းဆုပပီ်း LA[index] == x ဆုပပီ်း စစ်ပါတယ်။ LA[2]== 10,


30 == 10 ဆုတတ ော့ မ ်းတယ်။ မ ်းတတ ော့ if တအ က်က line 7 ကု
မလုပ်တတ ော့ပ တကျ ်သွေ ်းမယ်။

8 3 index = index + 1
index = 2 + 1 = 3
2 န််းပပီ်း 3 အ န််းရ မ ဖြစ်လုို့ အ န််းနပါတ်ကု 1 တ်းု တ update
လုပ်တ ဖြစ်ပါတယ်။

9 End of loop ဆုတတ ော့ condition ဆီ ဖပန်တက်မယ်။

5 index < N ဆုတတ ော့ 3 < 6 ဆုတတ ော့မန်တယ်။ while condition မန်တတ ော့
while body ကု အလုပ်လုပပ
် ါမယ်။

6,7 If နို့ တတွေျို့သလ ်းဆုပပီ်း LA[index] == x ဆုပပီ်း စစ်ပါတယ်။ LA[3]== 10,


40 == 10 ဆုတတ ော့ မ ်းတယ်။ မ ်းတတ ော့ if တအ က်က line 7 ကု
မလုပ်တတ ော့ပ တကျ ်သွေ ်းမယ်။

8 4 index = index + 1
index = 3 + 1 = 4
3 န််းပပီ်း 4 အ န််းရ မ ဖြစ်လုို့ အ န််းနပါတ်ကု 1 တ်းု တ update
လုပ်တ ဖြစ်ပါတယ်။

191 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

9 End of loop ဆုတတ ော့ condition ဆီ ဖပန်တက်မယ်။

5 index < N ဆုတတ ော့ 4 < 6 ဆုတတ ော့မန်တယ်။ while condition မန်တတ ော့
while body ကု အလုပ်လုပပ
် ါမယ်။

6,7 If နို့ တတွေျို့သလ ်းဆုပပီ်း LA[index] == x ဆုပပီ်း စစ်ပါတယ်။ LA[4]== 10,


50 == 10 ဆုတတ ော့ မ ်းတယ်။ မ ်းတတ ော့ if တအ က်က line 7 ကု
မလုပ်တတ ော့ပ တကျ ်သွေ ်းမယ်။

8 4 index = index + 1
index = 4 + 1 = 5
4 န််းပပီ်း 5 အ န််းရ မ ဖြစ်လုို့ အ န််းနပါတ်ကု 1 တ်းု တ update
လုပ်တ ဖြစ်ပါတယ်။

9 End of loop ဆုတတ ော့ condition ဆီ ဖပန်တက်မယ်။

5 index < N ဆုတတ ော့ 5 < 6 ဆုတတ ော့မန်တယ်။ while condition မန်တတ ော့
while body ကု အလုပ်လုပပ
် ါမယ်။

6,7 If နို့ တတွေျို့သလ ်းဆုပပီ်း LA[index] == x ဆုပပီ်း စစ်ပါတယ်။ LA[5]== 10,


60 == 10 ဆုတတ ော့ မ ်းတယ်။ မ ်းတတ ော့ if တအ က်က line 7 ကု
မလုပ်တတ ော့ပ တကျ ်သွေ ်းမယ်။

8 6 index = index + 1
index = 5 + 1 = 6
5 န််းပပီ်း 6 အ န််းရ မ ဖြစ်လုို့ အ န််းနပါတ်ကု 1 တ်းု တ update
လုပ်တ ဖြစ်ပါတယ်။

9 End of loop ဆုတတ ော့ condition ဆီ ဖပန်တက်မယ်။

5 index < N ဆုတတ ော့ 6 < 6 ဆုတတ ော့ condition မ ်းသွေ ်းပပီဖြစ်လုို့ looping
ထက ထွေက်မ ဖြစ်လုို့ end of loop ရျို့တနာက် တစ်တ က င််း line 10 ကု
သွေ ်းအလုပ်လုပမ
် ဖြစ်ပါတယ်။

10 Return found ဆုတော့အတွေက် return 0 ဆုပပီ်း တတွေျို့တော့ အ န််းနပါတ်ကု 0


ကု return ဖပန်တပ်းသွေ ်းမ ဖြစ်ပါတယ်။ တကယ်လုို့ တနာက်ဆု်း အ န််းထ
မတတွေျို့ ော့ဘူ်း ဆုရင်တတ ော့ -1 ကု return ဖပန်တပ်းသွေ ်းမ ဖြစ်ပါတယ်။

192 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

ဒီ algorithm ရျို့ မတက င််းတော့ အ ျက်ကတတ ော့

LA => {10, 20, 30, 40, 50, 60} ထက X = 10 ကုရ တ ပထမဆု်းအ န််း (0 အ န််း) မ တင် တတွေျို့ရျို့

နို့ တနာက်ဆု်းအ န််းအထ အ ျန်ကုန် ပပီ်းလုက် စစ်တနတ ဖြစ်ပါတယ်။ တကယ်က တတွေျို့ရင် ဆက်ပပီ်း

စစ်စရ မလုအပ်တတ ော့ပါဘူ်း။ ဒီတတ ော့ အ ျန်ကုန်သက်သ ရတအ င် တတွေျို့တ နို့ ဆက်မစစ်ပ တန််းပပီ်း

ထွေက် ျင်တတ ော့ တတွေျို့ရင် return ဖပန်မယ်လုို့ တရ်းလုက်ရင်ရပါပပီ။ ဒခတာ မှတခစချငတာက

အချနကိုနသကသာခစြဲ့ို အခ ြထွေကပပဆိုတာနဲ့ တန်း ထွေကပါ တနည်းခ ပာရရင တန်းပပ်း return

ပနပါ။ ဖပန်တရ်းဖပရရင်

Algorithm: Linear Search (2)

1. linearSearch(LA, N, x)
2. Set index = 0
3. Repeat while index < N:
4. If LA[index] == x then:
5. Return index
6. Index = index + 1
7. End of Loop
8. Return -1

Line 8 ကုတရ က်လ တယ်ဆုတ အတပေါ်က line 4 မမန် ော့လ၊ုို့ တတွေျို့ ော့တ မရ ော့လုို့ ဖြစ်ပါတယ်။

line 4 မ စစ်ထ ်းသလု ညီတ သ တတွေျို့ ော့ရင် line 5 က return ဖပန်ပပီ်း function ထက

ထွေက်သွေ ်းပပီ ဖြစ်ပါတယ်။ ဒါတ က ငော့် Line 8 ကုတရ က်လ တ ညီတ မတတွေျို့ဘူ်းဆုတော့

အဓပပါယ်ဖြစ်တ တ က ငော့် မရတော့ အ န််းနပါတ် -1 ကု return ဖပန်တပ်းတ ဖြစ်ပါတယ်။

193 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

အသစခရ်း ပတ algorithm(2) ကို အသံို်း ပြိုပပ်း trace ိုကကကည ကကညပါ။

1. LA => {10, 20, 30, 40, 50, 60}, X = 10

2. LA => {10, 20, 30, 40, 50, 60}, X = 5

Binary Search Algorithm

ငယ်စဉ်ကကီ်းလုက် သမ
ုို့ ဟုတ် ကကီ်းစဉ်ငယ်လုက် sorting စီပပီ်းသ ်း array မ မ Binary Search

Algorithm ကု အသု်းဖပြုပပီ်း ရ လုို့ရမ ဖြစ်ပါတယ်။

Binary search ဟ အလယ်ကတန ဖြတ်ပပီ်း တုက်စစ်ပါတယ်။ ဒါတ က ငော့်

အလယ်အ န််းနပါတ် Mid ကု Mid = (LB + UB)/2 ဆုပပီ်း တွေက်တပ်းရပါတယ်။

ရ ျင်တော့ x နငော့် Mid အ န််းထက တန်ြု်းတတွေကု တက


ု ်စစ်ပါ ော့မယ်။ ဒီတနရ မ တဖပ ျင်တ က

တစခိုနဲ့ တစခို တက
ို စစခရင ြစနင
ို ခ ခ ၃ ခိုပရှပါတယ။ ငယတာရယ၊ ညတာရယ နဲ့ ကက်းတာရယ

ြစပါတယ။

1. ညီ ော့ ရင် Mid အ န််းမ တတွေျို့တ ဖြစ်လုို့ တတွေျို့တော့ အ န််းနပါတ်ဖြစ်တော့ Mid ကု return

ဖပန်ပါ ော့မယ်။

AA BB CC DD JJ KK LL XX YY ZZ

0 1 2 3 4 5 6 7 8 9
LB Mid UB

2. ရ ျင်တော့ x တန်ြု်းက Mid အ န််းထက တန်ြု်းထက် ငယခရင array ဟ ငယ်စဉ်ကကီ်းလုက်

စီထ ်းတ ဖြစ်လုို့ Mid ရျို့ ငယ်တော့ တရျို့တစ်ဖ မ််းကုပ ရ ြို့လ


ု ုပါတယ်။ ဖပထ ်းတော့ table ကု

194 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

ကညော့် ကည်ပါ။ တရျို့တစ်ဖ မ််းမ LB က ရပပီ်းသ ်းဖြစ်တော့ အတွေက် LB ကု ဘ မ

လုပ်ြမ
ုို့ လုပါဘူ်း။ ဒါတ က ငော့် တရျို့တစ်ဖ မ််းမ မပါတော့ UB ကို Mid ရှေ့ ခရှှေ့တစခန်း Mid-1 ကို

ခရှေ့ပါမယ။

3. ရ ျင်တော့ x တန်ြု်းက Mid အ န််းထက တန်ြု်းထက် ကက်းခရင array ဟ ငယ်စဉ်ကကီ်းလုက်

စီထ ်းတ ဖြစ်လုို့ Mid ရျို့ ကကီ်းတော့ အတနာက်တစ်ဖ မ််းကုပ ရ ြို့လ


ု ုပါတယ်။ ဖပထ ်းတော့ table ကု

ကညော့် ကည်ပါ။ အတနာက်တစ်ဖ မ််းမ UB က ရပပီ်းသ ်းဖြစ်တော့ အတွေက် UB ကု ဘ မ

လုပ်ြမ
ုို့ လုပါဘူ်း။ ဒါတ က ငော့် တနာက်တစ်ဖ မ််းမ မပါတော့ LB ကို Mid ရှေ့ ခနောကတစခန်း Mid+1

ကို ခရှေ့ပါမယ။

ပထမ စစ ျင််းဆုရင် LB က UB ထက်ငယ်ပါတယ်။ ရ ျင်တော့ တက င်က ငယ် ော့ရင် UB = Mid – 1

ဆုတ UB ကု တရျို့တ်းု လုက်တ ၊ UB တလျ ော့လ တ ဖြစ်ပါတယ်။ ရ တတ


ော့ က င်က ကကီ်း ော့ရင် LB = Mid

+ 1 ဆုတ LB ကု တနာက်တရျို့လ တ ၊ LB ကု တု်းလ တ ဖြစ်ပါတယ်။ ဒခတာ ခ ျာ ာတ UB နဲ့

တ်းို ာတ LB တိုဲ့ ဆံိုမရင (ညကကပပဆိုရင) ရှာတာ တစပတ ပညခတာတာပါ။ ဆက ိုပ ိုဲ့ UB က

LB ထကငယသွော်းရင ရှာတာ တစပတ ပညပပ်း ိုဲ့ မခတွေှေ့ခတာတ အခ ခအခန ြစပါတယ။

AA BB CC DD JJ KK LL XX YY ZZ

0 1 2 3 4 5 6 7 8 9

Array အမည်ကု LA လုို့ပဆု ကပါစုို့။ အထမ ရတော့ တန်ြု်းတတွေကု A to Z ငယ်စဉ်ကကီ်းလုက် sorting

စီပပီ်းသ ်းဖြစ်လုို့ Binary Search ကုသု်းလုို့ရပါတယ်။ x= CC ကုရ မည် ဆုပါတတ ော့။

LB =0, UB = 9

Mid = (LB+UB)/2= (0+9)/2= 4 (ကန််းဖပညော့်ကု ကန််းဖပညော့်နစ


ို့ ်း ကန််းဖပညော့်ရပါတယ်)

195 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

ဒီတတ ော့ LA[Mid], LA[4] နို့ x ကု တုက်စစ်တယ်။ JJ နို့ CC ဆုတတ ော့ user ရ ျင်တော့ CC က

ငယ်တနတယ်။ ဒီတတ ော့ တရျို့တစ်ဖ မ််းကု ရ မယ်။ တရျို့တစ်ဖ မ််းဆုတတ ော့ UB ကု Mid -1 ကု တရျို့မယ်။

UB = Mid – 1 = 3

LB(0) ဟာ UB(3) ထကငယပပ်း ညသ ာ်းစစတာ မှနခနခသ်းတယ၊ ဒခတာရှာတာ တစပတမ ပည

ခသ်း ်းူ ။

Mid = (LB+UB)/2 = (0+3)/2 = 1

ဒီတတ ော့ LA[Mid], LA[1] နို့ x ကု တက


ု ်စစ်တယ်။ BB နို့ CC ဆုတတ ော့ ရ ျင်တော့ CC က ကကီ်းတနတယ်။

ဒီတတ ော့ LB ကု Mid + 1 ကု တရျို့မယ်။

LB = Mid + 1 = 1+ 1 =2

LB(2) ဟာ UB(3) ထကငယပပ်း ညသ ာ်းစစတာ မှနခနခသ်းတယ၊ ဒခတာရှာတာ

တစပတမ ပညခသ်း ူ်း။

Mid =(LB+UB)/2 = (2+3)/2 = 2

ဒီတတ ော့ LA[Mid], LA[2] နို့ x ကု တုက်စစ်တယ်။ CC နို့ CC ဆုတတ ော့ ညီသွေ ်းပပီ၊ တတွေျို့သွေ ်းပပီ ဖြစ်လုို့

တတွေျို့တော့ အ န််းနပါတ် 2(Mid) ကု return ဖပန်တပ်းလုက်ပါတယ်။ မတတွေျို့ရင် -1 ကု ဖပန်တပ်းမ

ဖြစ်ပါတယ်။ က algorithm ကု ကညော့် ကညော့်လုက်ရတအ င်။

196 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Algorithm: Binary Search

1. binarySearch(LA, LB, UB, x)


2. Repeat while LB <= UB:
3. Mid = (LB + UB)/2
4. If x == LA[Mid] then:
5. Return Mid
6. Else if x < LA[Mid] then:
7. UB = Mid – 1
8. Else
9. LB = Mid + 1
10. End of Loop
11. Return -1

Trace ိုကကကည ကကညပါ။

1. LA => {10, 20, 30, 40, 50, 60,70,80,90,100,110,122,170}, X = 20

2. LA => {10, 20, 30, 40, 50, 60,70,80,90,100,110,122,170}, X = 500

3. ဖပထ ်းတပ်းတော့ Binary Search Algorithm ဟ ငယ်စဉ်ကကီ်းလုက်စီထ ်းတော့ array အတွေက်

တရ်းသ ်းတပ်းထ ်းတ ဖြစ်ပါတယ်။ ဒါတ က ငော့် အဒီ algorithm ကု ကကီ်းစဉ်ငယ်လုက်စီထ ်းတော့

array အတွေက် တဖပ င််းတရ်းတပ်းပါ။

4. တဖပ င််းတရ်းထ ်းတော့ algorithm ဖြငော့် LA => {555, 444, 333, 222, 111, 99, 88, 77, 66, 55, 44,

33, 22, 11}, X = 22 ကု trace လုက်ပါ။

197 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Maximum and Minimum Searching Algorithms

Minimum

Array အ န််းထက အငယ်ဆု်းကု ရ ျင်တယ်ဆုရင် တရျို့ဆု်းအ န််း(0 အ န််း) ကု

အငယ်ဆု်းလုို့ ယူဆပါ။ တရျို့ဆု်းအ န််းကု အငယ်ဆု်းလုို့ ယူဆ ပပီ်းပပီဖြစ်လု၊ တရျို့ဆု်းအ န််းရျို့

တနာက်တစ် န််း( အ န််းနပါတ် ၁) ကတန တနာက်ဆု်းအ န်းထ တစ် န််းပပီ်း တစ် န််း min တန်ြု်းနို့

တက
ု ်စစ်ပါ။ min ဟ ငယ်ရမ ဖြစ်ပါတယ်။ min က ကကီ်းတနရင် ငယ်တော့ တက င်နို့ တဖပ င််းထညော့်ပါ။

Algorithm: Find Minimum

1. findMin(LA, UB)
2. Set min = LA [0]
3. Repeat for index = 1 to UB by 1:
4. If min > LA[index] then:
5. min = LA[index]
6. End of Loop
7. Return min

LA = {10, 15, 30, 5}, UB = 3

Line Min index အ ိုပ ိုပပံို

2 10 min = LA [0] – တရျို့ဆု်း န််းကု အငယ်ဆု်းလုို့ယူဆ။

3 1 For initialization: index =1


Condition: to UB ဆုတ <=UB လုို့တဖပ တ ဖြစ်ပါတယ်။
Index<= UB → 1 <= 3 ဆုတတ ော့ true ထွေက်လုို့ line 4 ကု လုပ်မယ်။

4 min > LA[index]


min > LA [1] → 10 > 15 ဆုတတ ော့ false ထွေက်လုို့ line 5 ကု မလုပ်တတ ော့ဘ
line 6 ကုသွေ ်းမယ်။

198 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

6 End of loop ဆုတတ ော့ line 3 ဖပန်တက်။

3 2 For looping မ တအ က်ကတန အတပေါ်ကု ဖပန်တက်လ ရင် update လုပ်၊


ပပီ်းရင် condition စစ်ရပါတယ်။
Update : by 1 ဆုတ index = index + 1 = 1+ 1 = 2
Condition: to UB ဆုတ <=UB လုို့တဖပ တ ဖြစ်ပါတယ်။
Index<= UB → 2 <= 3 ဆုတတ ော့ true ထွေက်လုို့ line 4 ကု လုပ်မယ်။

4 min > LA[index]


min > LA [2] → 10 > 30 ဆုတတ ော့ false ထွေက်လုို့ line 5 ကု မလုပ်တတ ော့ဘ
line 6 ကုသွေ ်းမယ်။

6 End of loop ဆုတတ ော့ line 3 ဖပန်တက်။

3 3 For looping မ တအ က်ကတန အတပေါ်ကု ဖပန်တက်လ ရင် update လုပ်၊


ပပီ်းရင် condition စစ်ရပါတယ်။
Update : by 1 ဆုတ index = index + 1 = 2+ 1 = 3
Condition: to UB ဆုတ <=UB လုို့တဖပ တ ဖြစ်ပါတယ်။
Index<= UB → 3 <= 3 ဆုတတ ော့ true ထွေက်လုို့ line 4 ကု လုပ်မယ်။

4 5 min > LA[index]


min > LA [3] → 10 > 5 ဆုတတ ော့ true ထွေက်လုို့ line 5 ကုလုပ်မယ်။
min = LA [index] = LA[3] = 5

6 End of loop ဆုတတ ော့ line 3 ဖပန်တက်။

3 4 Update : by 1 ဆုတ index = index + 1 = 3+ 1 = 4


Condition: to UB ဆုတ <=UB လုို့တဖပ တ ဖြစ်ပါတယ်။
Index<= UB → 4 <= 3 ဆုတတ ော့ false ထွေက်လုို့ end of loop အဖပင်ြက်
line 7 ကု လုပ်မယ်။

7 Return min ဆုတတ ော့ return 5 ဆုပပီ်း တ ေါ်တော့ တနရ ဆီကု return
ဖပန်တပ်းသွေ ်းမ ဖြစ်ပါတယ်။

199 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Min ဆုတတ ော့ ငယ်ရမ ၊ ဒါတ က ငော့် min ကကကီ်းတန ော့ရင် တဖပ င််းထညော့်တ ဖြစ်ပါတယ်။ Maximum မ

ကျန်တ အတူတူပါပ။ Maximum ဆုတတ ော့ ကကီ်းရမ ဖြစ်လုို့ ငယ်ရင် တဖပ င််းထညော့်ရမ ဖြစ်ပါတယ်။

အဒီ တစ်တနရ တလ်းပ ကွေတ ဖြစ်ပါတယ်။

ခ ကျင ကကညပါ။

1. findMaximum(LA, UB) algorithm ကုတရ်းပါ။

2. LA => {10, 70, 35, 77, 6, 600,4} ထမ Maximum ကု Question 1 ရျို့ findMaximum

algorithm ဖြငော့် trace လုက်ပါ။

200 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

“ပထမနစ်တက်တုန််းက

စ တမ်းပွေနာ်းနီ်းတတ ော့မ

သူငယ် ျင််းက ဟော့ ငါ data structure တမ်းဦ်းမယ် ဆတ


ု တ ော့

ရင််းဖပတတ ော့မယ်တပါ ော့၊

တမ်းလုကတ
် က

‘Trace လုကတ
် ယ် ဆုတ ဘ တုန််းတော့’

အတတွေ်းက အဒီလုလွေန် ကတ ၊

အဒီလု ဖြစ်တနမယ်။”

201 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

အခန်း (၁၃)

Sorting Algorithms

Swap

Sorting algorithm တ အ
ွေ တ ြောင်း မတ ြောခငမြော sorting စီ တ
ဲ့ ေရြောမြော သိ ိိုသိဖလ
ိုို့ိ ိိုအ ဲ့

swap လို ြောတလ်း ိို အရငတ ြော ါမယ။

အဒီ ေ်း ေ ြော်း နစခိုထမြော ရိ ဲ့ အစြော်းအတသြော တ ွေ ိို တေရြောလချင ါ ယ။

ဆိိုလိို ြော ဒီဘ ေ်း ေထ အသီ်းတ ွေ ိို ဟိိုဖ ေ်း ေထ ထညဲ့ပ ီ်း၊ ဟိိုဘ ေ်း ေထ

အစြော်းအတသြော တ ွေ ိို အသီ်း ေ်း ေထ လြောထညဲ့ချင ြော ဖစ ါ ယ။ အ တ ြောဲ့ ဘယလိိုလို

မလ။ ေ်း ေ စချ အ ယ


ိို ူရ ါမယ။

▪ ယူလိို ဲ့ ေ်း ေအလွေ ထ ိို အသီ်းတ ွေထညဲ့လိို ါ ဲ့မယ၊ ( ယ က ိြို ြောအရငထညဲ့လိိုို့

ရ ါ ယ။

202 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

▪ ဒါဆိို အသီ်း ေ်း ေလွေ သွေြော်းပ ီဆိိုတ ြောဲ့ အသီ်း ေ်း ေထ ိို အြောလူ်းတ ြောစ ဲ့အစြော်းအစြောတ ွေ

လြောထညဲ့ ါမယ။

▪ အြောလူ်းတ ြောစ ဲ့အစြော်းအစြော ေ်း ေ အခိုလွေ သွေြော်းပ ီ ဆိိုတ ြောဲ့မ ေ်း ေအလွေ ထ ထညဲ့ထြော်း ဲ့

အသီ်းတ ွေ လြောထညဲ့မြော ဖစ ါ ယ။

ဘယနစခါ လို လိို ရသလဆိိုရင ၃ ခါ လို လိို ရ ါ ယ။ အဒီလိို ါ LA ရဲ့ j အခေ်းေို့ k အခေ်း ထ

ေဖိို်းတ ွေ ိို swap လို ချင ယဆိိုရင

Swap ( j, k)

1. Temp = LA [ j ]
2. LA [ j ] = LA [ k ]
3. LA [ k ] = Temp

ဒီမြော Temp ဆိို ြော အတ ေါ်မြောတ ြောခဲ့ ဲ့ ေ်း ေလွေ ေဆ


ို့ င ူ ါ ယ။ သူူ့ထ ိို LA [ j ] ိို

ထညဲ့လိို တ ြောဲ့ j အခေ်းလွေ သွေြော်း ါ ယ။ ဒီတ ြောဲ့မ j အခေ်းထ ိို k အခေ်းထ ေဖိို်း ထညဲ့ ါ ယ။

တေော ဆို်းမြောတ ြောဲ့ လွေ သွေြော်း ဲ့ k အခေ်းထ ိို Temp ထ ဟြော ေထညဲ့လိို ြောတ ြောငဲ့ Temp ထ

ယြောယီထညဲ့ထြော်း ဲ့ j အခေ်း ေဖိို်းဟြော k အခေ်းထ တရြော သွေြော်း ြော ဖစ ါ ယ။

10 20 30 40 50
0 1 2 3 4
Let j = 1, k=3

Line 1: Temp = LA [ j ] = LA [ 1 ] = 20

Line 2: LA [ j ] = LA [ k ]

LA [ 1] = LA [3]

LA[1] = 40

Line 3: LA [ k ] = Temp

LA [3] = 20

10 40 30 20 50
0 1 2 3 4

203 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Bubble Sort

Sorting တ ွေမှာ ငယစဉကကီ်းလိုကစီချငရင တရှေ့အခန်းက ကကီ်းတနရင လဲမယ(swap မယ)။

ကကီ်းစဉငယလိုက စီချငရင တရှေ့အခန်းက ငယတနရင swap လိုပမှာဖြစပါ ယ။

Bubble sort ရဲ့ အလို လို ို လျ နစခေ်း ိို ိို စစမြော ဖစ ါ ယ။ ထမဆို်း 0

အခေ်း နငဲ့ 1 အခေ်း ိို ိို စစမြော ဖစ ါ ယ။ 0 ဆိို 1, 1 ဆိို 2, in ဆိရ


ို င in + 1 အခေ်းေို့

ိို စစ ြော ဖစလိိုို့ တေော ဆို်းအခေ်းထိသွေြော်းလိိုို့ မရ ါဘူ်း။ တနောကဆို်းအခန်းထ သွေှာ်းခဲဲ့ ရင

သူရဲှေ့တနောကမှာ က
ို စရှာ မရတ ှာဲ့လိုို့ ဖြစပါ ယ။ ဒါတ ကှာငဲ့ ပထမအကကမမှာ စခန်း

တလ ှာဲ့ပပီ်း က
ို စစမှာ ဖြစပါ ယ။

44, 33, 11, 55, 77, 90, 10 ိို ငယစဉက ီ်းလိို စီ ညဲ့လိို ရတအြောင ါ။

No. 1 - တနောကအခန်းနဲို့ က
ို မှာမို့ို စခန်းတလ ှာဲ့ က
ို မယ။

44, 33, 11, 55, 77, 90, 10 0 အခေ်း ေို့ 1 အခေ်း ိို စစ ယ။ တရဲ့အခေ်း က ီ်းတ ြောဲ့ swap

လို မယ။

33, 44, 11, 55, 77, 90, 10 1 အခေ်း ေို့ 2 အခေ်း ိို စစ ယ။ တရဲ့အခေ်း က ီ်းတ ြောဲ့ swap

လို မယ။

33, 11, 44, 55, 77, 90, 10 2 အခေ်း ေို့ 3 အခေ်း ိို စစ ယ။ တရဲ့အခေ်း ငယတေတ ြောဲ့

swap လို စရြော မလိို ါဘူ်း။

33, 11, 44, 55, 77, 90, 10 3 အခေ်း ေို့ 4 အခေ်း ိို စစ ယ။ တရဲ့အခေ်း ငယတေတ ြောဲ့

swap လို စရြော မလိို ါဘူ်း။

204 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

33, 11, 44, 55, 77, 90, 10 4 အခေ်း ေို့ 5 အခေ်း ိို စစ ယ။ တရဲ့အခေ်း ငယတေတ ြောဲ့

swap လို စရြော မလိို ါဘူ်း။

33, 11, 44, 55, 77, 90, 10 5 အခေ်း ေို့ 6 အခေ်း ိို စစ ယ။ တရဲ့အခေ်း က ီ်းတေတ ြောဲ့ swap

လို မြော ဖစ ါ ယ။

စခေ်းတလ ြောဲ့ ိို ြောတ ြောငဲ့ 90 အထိ သွေြော်း ြော ဖစ ါ ယ။

ဒီတ ြောဲ့မ သူူ့ရဲ့ တေော စခေ်း 10 ေို့ ိို လိရ


ိုို့ မြော ါ။ 10 ထိသွေြော်းခဲ့ရင

တေော မြော ိို စရြောမရိတ ြောဲ့ ါဘူ်း။

33, 11, 44, 55, 77, 10, 90

ဒါဟြော ထမအက ိမ ိို စစလိိုို့ပ ီ်းသွေြော်း ြော ဖစ ါ ယ၊ ထမ အက ိမလ ပ ီ်းသွေြော်းတရြော

အက ီ်းဆို်း ေ
ိ ်း စလို်း ဖစ ဲ့ 90 ဟြော တေော ဆို်း ိို တရြော သွေြော်းပ ီ ဖစ ါ ယ။ ဒါတ ကှာငဲ့ ဒို ယ

အကကမမှာ 90 အခန်းကို ထညဲ့ ိုကစရှာမလိုတ ှာဲ့ပါဘူ်း။ ဒီတ ှာဲ့ ဒို ယ အကကမမှာ နစခန်း တလ ှာဲ့ပပီ်း

က
ို စစမှာဖြစပါ ယ။

No. 2 - အကကီ်းဆို်း 1 လို်းတနောကဆို်းတရှာကသွေှာ်းလို့ို 2 ခန်းတလ ှာဲ့ က


ို မယ။

33, 11, 44, 55, 77, 10, 90 0 အခေ်း ေို့ 1 အခေ်း ိို စစ ယ။ တရဲ့အခေ်း က ီ်းတ ြောဲ့ swap

လို မယ။

11, 33, 44, 55, 77, 10, 90 1 အခေ်း ေို့ 2 အခေ်း ိို စစ ယ။ တရဲ့အခေ်း ငယတ ြောဲ့ swap

မလို တ ြောဲ့ ါဘူ်း။

11, 33, 44, 55, 77, 10, 90 2 အခေ်း ေို့ 3 အခေ်း ိို စစ ယ။ တရဲ့အခေ်း ငယတေတ ြောဲ့

swap လို စရြော မလိို ါဘူ်း။

205 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

11, 33, 44, 55, 77, 10, 90 3 အခေ်း ေို့ 4 အခေ်း ိို စစ ယ။ တရဲ့အခေ်း ငယတေတ ြောဲ့

swap လို စရြော မလိို ါဘူ်း။

11, 33, 44, 55, 77, 10, 90 4 အခေ်း ေို့ 5 အခေ်း ိို စစ ယ။ တရဲ့အခေ်း က ီ်းတ ြောဲ့ swap

လို မယ။

နစခေ်းတလ ြောဲ့ ိို လိိုို့ 77 ထိ သွေြော်း ြော ဖစ ါ ယ။

11, 33, 44, 55, 10, 77, 90

ဒို ယအကကမ ိုကလဲပပီ်းသွေှာ်းတရှာ အကကီ်းဆို်းကန်း 2 လို်းတနောကဆ်းို တရှာကသွေှာ်းပပီ ဖြစပါ ယ။

ဒါတ ကှာငဲ့ ယ အကကမမှာ 3 ခန်း တလ ှာဲ့ က


ို မှာ ဖြစပါ ယ။

No. 3 - အကကီ်းဆို်း 2 လို်းတနောကဆို်းတရှာကသွေှာ်းလို့ို 3 ခန်းတလ ှာဲ့ က


ို မယ။

11, 33, 44, 55, 10, 77, 90 0 အခေ်း ေို့ 1 အခေ်း ိို စစ ယ။ တရဲ့အခေ်း ငယတ ြောဲ့ swap

မလို တ ြောဲ့ ါဘူ်း။

11, 33, 44, 55, 10, 77, 90 1 အခေ်း ေို့ 2 အခေ်း ိို စစ ယ။ တရဲ့အခေ်း ငယတ ြောဲ့ swap

မလို တ ြောဲ့ ါဘူ်း။

11, 33, 44, 55, 10, 77, 90 2 အခေ်း ေို့ 3 အခေ်း ိို စစ ယ။ တရဲ့အခေ်း ငယတေတ ြောဲ့

swap လို စရြော မလိို ါဘူ်း။

11, 33, 44, 55, 10, 77, 90 3 အခေ်း ေို့ 4 အခေ်း ိို စစ ယ။ တရဲ့အခေ်း က ီ်းတ ြောဲ့ swap

လို မယ။

3 ခေ်းတလ ြောဲ့ ိို ြောမိိုို့ 55 ထိသွေြော်း ြော ဖစ ါ ယ။

11, 33, 44, 10, 55, 77, 90

206 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

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

ဒါတ ကှာငဲ့ တနောကအကကမမှာ 4 ခန်း တလ ှာဲ့ က


ို မှာ ဖြစပါ ယ။

No. 4 - အကကီ်းဆို်း 3 လို်းတနောကဆို်းတရှာကသွေှာ်းလို့ို 4 ခန်းတလ ှာဲ့ က


ို မယ။

11, 33, 44, 10, 55, 77, 90 0 အခေ်း ေို့ 1 အခေ်း ိို စစ ယ။ တရဲ့အခေ်း ငယတ ြောဲ့ swap

မလို တ ြောဲ့ ါဘူ်း။

11, 33, 44, 10, 55, 77, 90 1 အခေ်း ေို့ 2 အခေ်း ိို စစ ယ။ တရဲ့အခေ်း ငယတ ြောဲ့ swap

မလို တ ြောဲ့ ါဘူ်း။

11, 33, 44, 10, 55, 77, 90 2 အခေ်း ေို့ 3 အခေ်း ိို စစ ယ။ တရဲ့အခေ်း က ီ်းတေတ ြောဲ့ swap

လို မယ။

11, 33, 10, 44, 55, 77, 90

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

ဒါတ ကှာငဲ့ တနောကအကကမမှာ 5 ခန်း တလ ှာဲ့ က


ို မှာ ဖြစပါ ယ။

No. 5 - အကကီ်းဆို်း 4 လို်းတနောကဆို်းတရှာကသွေှာ်းလို့ို 5 ခန်းတလ ှာဲ့ က


ို မယ။

11, 33, 10, 44, 55, 77, 90 0 အခေ်း ေို့ 1 အခေ်း ိို စစ ယ။ တရဲ့အခေ်း ငယတ ြောဲ့ swap

မလို တ ြောဲ့ ါဘူ်း။

11, 33, 10, 44, 55, 77, 90 1 အခေ်း ေို့ 2 အခေ်း ိို စစ ယ။ တရဲ့အခေ်း က ီ်းတ ြောဲ့ swap

လို ါမယ။

11, 10, 33, 44, 55, 77, 90

207 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

ငါ်းကကမ ိုကလဲပပီ်းသွေှာ်းတရှာ အကကီ်းဆို်းကန်း 5 လို်းတနောကဆို်းတရှာကသွေှာ်းပပီ ဖြစပါ ယ။ ဒါတ ကှာငဲ့

တနောကအကကမမှာ 6 ခန်း တလ ှာဲ့ က


ို မှာ ဖြစပါ ယ။

No. 6 - အကကီ်းဆို်း 5 လို်းတနောကဆို်းတရှာကသွေှာ်းလို့ို 6 ခန်းတလ ှာဲ့ က


ို မယ။

11, 10, 33, 44, 55, 77, 90 0 အခေ်း ေို့ 1 အခေ်း ိို စစ ယ။ တရဲ့အခေ်း က ီ်းတ ြောဲ့ swap

လို ါမယ။

10, 11, 33, 44, 55, 77, 90

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

ဆကပပီ်း က
ို စစစရှာမလိုတ ှာဲ့ပါဘူ်း။

Bubble Sort Algorithm

အတ ေါ် ွေ ထြော်း ြော ိို ေ ညဲ့ ညဲ့ ါမယ။ 44, 33, 11, 55, 77, 90, 10 ဆိိုပ ီ်း ိေ်း 7

လို်း ိို ငယစဉက ီ်းလိို စီ ထြော်း ြော ဖစ ါ ယ။ (N = 7)

▪ No ထြော်း ြောတလ်းတ ွေ ေ ညဲ့လိို တ ြောဲ့ 6 က ိမ ိ ိ table ဆွေ ထြော်း ြော ိို

တ ွေဲ့ရမြော ဖစ ါ ယ။ 7 လို်း ိို 6 က ိမဆိိုတ ြောဲ့, N လို်းဆိိုရင N – 1 က ိမ

ိို စစမြော ဖစ ါ ယ။

▪ No ထြော်း ြော စက ိမမြော ဇယြော်းထ အမျြော်းက ီ်း ိို စစရ ါတသ်း ယ။ စက ိမမြော

အမျြော်းက ီ်း ဆိိုရင nested loop လိိုို့ တ ြောခဲ့ ါ ယ။ ဒီတ ြောဲ့ စက ိမလို ဲ့ No ထြော်း

ြော outer loop ဖစပ ီ်း၊ ဇယြော်းထမြော ရ နစခေ်း အက ိ မက ိမ ိို ြော inner

208 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

loop ဖစမြော ဖစ ါ ယ။ No ထြော်း ဲ့ outer loop အ ွေ variable out လိိုို့ထြော်းပ ီ်း၊

ရ အခေ်း ိို ဲ့ inner loop အ ွေ variable ိို in လိိုို့ ထြော်းလိို ါ ဲ့မယ။

▪ ပ ီ်းတ ြောဲ့ No 1 မြော စခေ်းတလ ြောဲ့ ိို ယ၊ No 2 အက ိမမြော နစခေ်းတလ ြောဲ့ ိို ြော ဖစလိိုို့

No ိို out ထြော်းထြော်းတ ြောဲ့ out အက ိမ တလ ြောဲ့ ိို မြော ဖစ ါ ယ။

bubbleSort(LA, N)

1. Set UB = N - 1

2. Repeat for out = 1 to UB by 1:

3. Repeat for in =0 to UB - out by 1:

4. If LA[in] > LA[in+1] then:

5. Swap ( in, in+1)

6. End of Loop

7. End of loop

▪ ရိ ဲ့အခေ်းအတရအ ွေ N 5 ဆိိုရင အခေ်းေ ါ 0 to 4 ဖစမြော ဖစလိိုို့ UB 4 ဖစမြော

ဖစ ါ ယ။ ဒါတ ြောငဲ့ line 1 မြော UB = N – 1 ဆိိုပ ီ်း ွေ ထြော်း ြော ါ။

▪ အတ ေါ်မြော ိေ်း 7 လို်းစီတ ြောဲ့ No ထြော်း ြော ညဲ့ ါ။ 1 to 6 လို ခရ


ဲ့ ြော ဖစလိိုို့ Line 2

out ဟြော 1 to UB လို ထြော်း ြော ဖစ ါ ယ။

▪ ရ နစခေ်း ိို စစ ဲ့ inner loop ဟြော 0 ခေ်း စ ယ၊ No 1 မြော ရိ ဲ့ အခေ်းေ ါ ထ

1 ခေ်းတလ ြောဲ့၊ No 2 မြော ရိ ဲ့ အခေ်းေ ါ ထ 2 ခေ်းတလ ြောဲ့ စသည ဖငဲ့သွေြော်းလိိုို့ No ိို

ိိုယစြော်း ြို ြောဟြော out ဖစ ဲ့အ ွေ UB-out ထိ သွေြော်းထြော်း ြော ဖစ ါ ယ။

စပပီ်း တလဲ့လှာ အ
ဲဲ့ ချနမှာ algorithm ကို တကှာင်းတကှာင်း နောလညသတဘှာတပါက တစ ဲဲ့

နည်းကတ ှာဲ့ Trace လိုက ှာပဲ ဖြစပါ ယ။ ဒီတ ြောဲ့ trace လိို ညဲ့ ရတအြောင။

209 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

LA = { 44, 11, 22, 33}, N = 4

UB = N – 1 = 4 – 1 = 3

Out ဟြော 1 တေ UB အထိ သွေြော်းမြော ဖစလိိုို့ table ရဲ့ out column မြော 1,2,3 ဆိိုပ ီ်း

ဖညဲ့လိို ယ။

out In အလိုပလိုပပို LA
1
2
3

Out ေဖိို်း 1 မြော in 0 to UB – out = 3 – 1 = 2 ထိသွေြော်းမြော ဖစလိိုို့ out 1 အ ွေ in

column ိို 0,1,2 လိိုို့ ဖညဲ့လိို ယ။

out In အလိုပလိုပပို LA
1 0 44, 11, 22, 33
1
2

Out ေဖိို်း 2 ဆိိုရင in 0 to UB – out = 3 – 2 = 1 (0,1)

Out ေဖိို်း 3 ဆိိုရင in 0 to UB – out = 3 – 3 = 0 (0)

out In အလိုပလိုပပို LA
1 0 44, 11, 22, 33
1

210 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

2
2 0
1
3 0

အခိုဆိိုရင outer loop ေို့ inner loop ိို table ထ ဖညဲ့ပ ီ်းပ ီ ဖစလိိုို့ စက ိမချင်းစီမြော

4. If LA[in] > LA[in+1] then:

5. Swap ( in, in+1)

ိို လို ရတ ြောဲ့မြော ဖစ ါ ယ။

out In LA[in] > LA[in+1] LA

1 0 LA [0] > LA[1] ➔ 44 > 11 ဆိိုတ ြောဲ့မေတ ြောဲ့ 44, 11, 22, 33

Swap(in, in+1) → Swap(0,1) ိိုလို မယ။

1 LA [1] > LA[2] ➔ 44 > 22 ဆိိုတ ြောဲ့မေတ ြောဲ့ 11, 44, 22, 33

Swap(in, in+1) → Swap(1,2) ိိုလို မယ။

2 LA [2] > LA[3] ➔ 44 > 33 ဆိိုတ ြောဲ့မေတ ြောဲ့ 11, 22, 44, 33

Swap(in, in+1) → Swap(2,3) ိိုလို မယ။

2 0 LA [0] > LA[1] ➔ 11 > 22 ဆိိုတ ြောဲ့မြော်း ယ၊ ဒီတ ြောဲ့ 11, 22, 33, 44

ဘြောမ လို စရြောမလိိုတ ြောဲ့ဘူ်း။

1 LA [1] > LA[2] ➔ 22 > 33 ဆိိုတ ြောဲ့မြော်း ယ၊ ဒီတ ြောဲ့ 11, 22, 33, 44

ဘြောမ လို စရြောမလိိုတ ြောဲ့ဘူ်း။

211 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

3 0 LA [0] > LA[1] ➔ 11 > 22 ဆိိုတ ြောဲ့မြော်း ယ၊ ဒီတ ြောဲ့ 11, 22, 33, 44

ဘြောမ လို စရြောမလိိုတ ြောဲ့ဘူ်း။

11, 22, 33, 44 ဆိိုပ ီ်း အတ ဖထွေ သွေြော်း ါ ယ။ ဒီမြော စချ သ ိထြော်းတစချင ြော out

ေဖိို်း 1 ပ ီ်းလိိုို့ ထွေ လြော ဲ့ အတ ဖ ိို စချ ညဲ့ ညဲ့ ါ။ table မြော မငသြောတအြောင

တလ်းတထြောငဲ့တလ်းေို့ ဝိိုင်း ထြော်း ါ ယ။ out ေဖိို်း 1 ပ ီ်းရိုေို့ အြော်းလို်း sorting စီပ ီ်းသြော်း ဖစသွေြော်း

ြော ိို တ ွေဲ့ရမြော ဖစ ါ ယ။ ဒီလိို sorting စီပ ီ်းသြော်း ဖစမ ဖစဆိို ြော တ ြောဲ့ ဝငလြော ဲ့ ိေ်းတ ွေ

တ ေါ်မြောမူ ည ြောတ ါ ဲ့တလ။ sorting စီပ ီ်းသြော်း ဖစ ြော ိို ထ စစတေတ ြောဲ့ အချိေ ိုေ ြော ရိမြော

ဖစ ါ ယ။ ဒါတ ြောငဲ့ စီပ ီ်းသြော်း ဖစသွေြော်းရင၊ ေည်းအြော်း ဖငဲ့ out စက ိမစြောအ ွေ inner loop

ိို စစ ြော မြော စက ိမမ မလရတ ြောဲ့ရင (swap) မလို ရတ ြောဲ့ရင ဆ မ ိို ေို့ ဆိို ြောမျိြို်း

တရ်းလိိုို့ရ ါ ယ။

bubbleSort(LA, N)

1. Set UB = N – 1

2. Set out = 1

3. Set isSwap = true

4. Repeat while out<= UB and isSwap:

5. isSwap = false

6. Repeat for in =0 to UB - out by 1:

7. If LA[in] > LA[in+1] then:

8. Swap ( in, in+1)

212 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

9. isSwap = true

10. End of Loop

11. out = out + 1

12. End of loop

outer loop ရဲ့ while မြော and isSwap ဆိို ြော isSwap လည်း true ဖစတေမ ဆ လို မယလိိုို့

ဆိိုလိို ြော ဖစ ါ ယ။ ဒီမြော out (outer) loop စက ိမစ ြောေို့ isSwap ထ ိို false ထညဲ့ထြော်း

လိို ယ။ မလရတသ်းဘူ်းလိိုို့ ဆိိုလိို ြော ဖစ ါ ယ။ အထ in(inner) loop မြော လလိို ြောေို့

isSwap ထ ိို true တ ြော ထညဲ့လိို ယ။ ဒီတ ြောဲ့ inner ထမြော စက ိမမ မလခဲ့ရဘူ်းဆိိုရင

isSwap ဟြော false အ င


ိို ်း ရိတေမြော ဖစ ယ။ ဒါဆိို out မြော isSwap(ture) ဖစမ လို မယ

တ ြောထြော်းလိိုို့ out တေထွေ သွေြော်းမြော ဖစလိိုို့ ဆ ပ ီ်း စရြောမလိိုတ ြောဲ့ဘူ်း။ ဒီတ ြောဲ့ run time

သ သြောမြော ဖစ ါ ယ။ လခဲ့ရင isSwap ဟြော true ဖစတေမယ။ ဒါဆိို ဆ ပ ီ်း looping

ိို စစတေမြော ဖစ ါ ယ။

တလဲ့ကျငဲ့ ကညဲ့ ကပါ။

1. LA = 44, 33, 11, 55, 77, 90, 40, 60, 99, 22, 88, 66 ိို Bubble sort ထမ algorithm ဖငဲ့

sorting စီ ါ။

2. LA = 44, 33, 11, 55, 77, 90, 40, 60, 99, 22, 88, 66 ိို Bubble sort ဒို ယ
ိ algorithm

ဖငဲ့ sorting စီ ါ။ Trace လိို ရမညဲ့ table စ


ို ဆွေ ထြော်း ါ ယ။

213 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Line Out In isSwap အလို လို ို LA

3. ထမ Bubble sort algorithm ိို က ီ်းစဉငယလိို စီဖိုို့ိ ေတရ်းတ ်း ါ။

4. ဒို ယ
ိ Bubble sort algorithm ိို က ီ်းစဉငယလိို စီဖိိုို့ ေတရ်းတ ်း ါ။

Selection Sort

Bubble sort 0 အခေ်းဆိိုရင 1 အခေ်းေို့ ိို စစ ယ၊ in ဆိိုရင in+ 1 ေို့ ိို စစ ယ။

ဆိိုလိို ြော တေော စခေ်းေို့ ိို စစ ယ။ ဒါတ ြောငဲ့ တေော ဆို်းအခေ်းထိသွေြော်းလိိုို့မရဘူ်း။

တေော ဆို်းရဲ့ တရဲ့ စခေ်းထိ သွေြော်းလိိုို့ရ ါ ယ။

Selection Sorting တ ြောင်း ေ၊ 2 ဆိိုရင 1, 1 ဆိိုရင 0 အခေ်း၊ J ဆိိုရင J-1 ဆိိုပ ီ်း

တရဲ့အခေ်းေို့ ိို ြော ဖစ ါ ယ။ ဒါတ ြောငဲ့ အခေ်းေ ါ 0 တေ စလိိုို့မ ါဘူ်း။ 0 သြော

စခဲ့မယဆိိုရင သူူ့မြော ိို စစစရြော အတရဲ့ခေ်းမရိတ ြောဲ့လိိုို့ ဖစ ါ ယ။ ဒါတ ြောငဲ့ 1 ခေ်း စ ါမယ။

အတ ေါ်မြော ေမူေော ွေ ပ ီ်းမ algorithm ရင်း ြော ဆိိုတ ြောဲ့၊ ဒီ စခါ algorithm ပ ီ်းမ trace

လိို ရတအြောင။

selectionSort(LA, N)

1. Set UB = N -1
2. Repeat for out =0 to UB-1 by 1
3. Set min = out
4. Repeat for in = out + 1 to UB by 1
5. If(LA[min] > LA[in]) then:
6. min = in;
7. End of Loop
8. Swap (out, min)
9. End of Loop

214 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

44, 33, 11, 55, 77, 90, 10 ိို ငယစဉက ီ်းလိို SelectionSort ေို့ စီ ညဲ့လိို ရတအြောင ါ။

N=7

Line out in Min LA [ min ] > LA [in] LA အလိုပလိုပပို

1 44, 33, 11, UB =N – 1=7 – 1 = 6

55, 77, 90,

10

2 0

3 0 min = out = 0

4 1 in = out + 1 = 0 + 1

5 1 LA[0] > LA[1] Line 6 : min = in

44 > 33 -> true

7 Inner loop အ ိ ဖစလိိုို့ line

4 ိို ေ မယ။

4 2 For looping မြော အတ ေါ်

ေ လြော ြောေို့ update လို

ါ ယ။ ပ ီ်းရင condition စစ

ါ ယ။

By 1 ဆိို အ
ဲ့ ွေ in = in +1

လို

in = 1 + 1 = 2

215 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

to UB လိိုို့ဆိို ဲ့အ ွေ

in <= UB ထိ လို မြော ဖစ ါ ယ။

2 <= 6 ဆိိုတ ြောဲ့မေ ယ၊

5 2 LA [ 1] > LA [2] Line 6 : min = in

33 > 11 -> true

7 Go to line 4

4 3 Update : in = in +1 = 2+1 = 3

in <= UB, 3 <= 6 -> ture

5 LA [ 2] > LA [3] မြော်းတ ြောဲ့ line 6 ိို မလို

11 > 55 -> false တ ြောဲ့ဘူ်း

7 Go to Line 4

4 4 Update : in = in +1 = 3+1 = 4

in <= UB, 4 <= 6 -> ture

5 LA [ 2] > LA [4] မြော်းတ ြောဲ့ line 6 ိို မလို

11 > 77 -> false တ ြောဲ့ဘူ်း

7 Go to Line 4

4 5 Update : in = in +1 = 4+1 = 5

in <= UB, 5 <= 6 -> ture

5 LA [ 2] > LA [5] မြော်းတ ြောဲ့ line 6 ိို မလို

11 > 90 -> false တ ြောဲ့ဘူ်း

7 Go to Line 4

216 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

4 6 Update : in = in +1 = 5+1 = 6

in <= UB, 6 <= 6 -> true

5 6 LA [ 2] > LA [4] Line 6: min = in

11 > 10 -> true

7 Go to Line 4

4 7 Update : in = in +1 = 6+1 = 7

in <= UB, 6 <= 6 -> false

ဆိိုတ ြောဲ့ inner loop ထွေ

line 8 ိို သွေြော်း

8 10, 33, 11, Swap (out, min)

55, 77, 90, Swap (0, 6)

44 Inner loop ပ ီ်း ြောေို့ ငယဆို်း

စလို်း တရဲ့ ိို တရြော သွေြော်း ြော

ဖစ ါ ယ။

9 Outer loop အ ိ ဖစလိိုို့ Line 2

ေ ။

2 1 Update : out = out +1 =0+1 =1

Condition : out <= UB -1

1 <= 5 -> true

3 1 min = out

4 2 Initialization: in = out + 1

217 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Condition : in <= UB

2 <= 6 → true

ဲ့ ဒီတလြော ေမူေော trace လိို ထြော်းရင ဆ လိို မယလိိုို့ ထင ါ ယ။ Algorithm

စခို ိို တ ြောင်းတ ြောင်းေော်းလညဖိိုို့ ဆိိုရင trace မျြော်းမျြော်းလိို ရမြော ဖစ ါ ယ။ ဒါတ ြောငဲ့

ဒါတလ်း ိို အတ ဖထွေ သညအထိ Trace လိို ဖစတအြောငလိို ါ။ Trace ပ ီ်းတအြောင လိို ပ ီ်းမ

တအြော စြောတ ွေ ိို ဆ ဖ ါ။

အလို လို ို ိို အ ျဉ်းချြို ပ ီ်း တ ြောရမယဆိိုရင

▪ ဒီမြော တရဲ့အခေ်းေို့ သွေြော်းသွေြော်း ိို စစမြော ဖစ ြောတ ြောငဲ့

o Out 0 ဆိိုရင in 1 to UB ထိသွေြော်းမယ။ ိို စစရင်း အငယဆို်း ေဖိို်းရိ ဲ့

အခေ်းေ ါ ိို min ထ ထညဲ့ခဲ့မယ။ စစလိိုို့ အြော်းလို်းပ ီ်းမြော min အခေ်း ေို့ out အခေ်း

တေရြောချင်း လမယ။ ဒါတ ြောငဲ့ out 0 ပ ီ်းသွေြော်းရင အငယဆို်း ေဖိို်း စခို 0 ခေ်းမြော

တရြော သွေြော်းမြော ဖစ ါ ယ။

o Out 1 ဆိုရင် in 2 to UB ထိသွေြော်းမယ။ ိို စစရင်း အငယဆို်း ေဖိ်းို ရိ ဲ့

အခေ်းေ ါ ိို min ထ ထညဲ့ခဲ့မယ။ စစလိိုို့ အြော်းလို်းပ ီ်းမြော min အခေ်း ေို့ out အခေ်း

တေရြောချင်း လမယ။ ဒါတ ြောငဲ့ out 1 ပ ီ်းသွေြော်းရင ဒို ိယ အငယဆို်း ေဖိို်း စခို

အခေ်းေ ါ 1 မြော ထ ပ ီ်း တရြော သွေြော်းမြော ဖစ ါ ယ။

o ဒါဆိိုရင out 0 ဆိိုရင in 1 စမယ၊ out 1 ဆိိုရင in 2 စမယ။

ဒါတ ြောငဲ့ out သည 0 တေ UB-1 ထိသွေြော်းမယ။ ဘြောလိိုို့လဆိိုရင out UB

အထိသွေြော်းခဲ့ရင in out+1 ဆိိုတ ြောဲ့ UB ထ တ ျြောသွေြော်းပ ီ်း in တထြော စရြော

အခေ်း မရိတ ြောဲ့လိိုို့ ဖစ ါ ယ။

218 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

အလွေယေည်းေို့ Trace လိို ါမယ။

44, 33, 11, 55, 77, 90, 10

N = 7, UB = 7- 1 =6

Out : 0 to UB - 1 → 0 to 5

Out 0: min = 0

in 1: 44, 33, 11, 55, 77, 90, 10, min = 1

in 2: 44, 33, 11, 55, 77, 90, 10, min = 2

in 3: 44, 33, 11, 55, 77, 90, 10, min = 2

in 4: 44, 33, 11, 55, 77, 90, 10, min = 2

in 5: 44, 33, 11, 55, 77, 90, 10, min = 2

in 6: 44, 33, 11, 55, 77, 90, 10, min = 6

တရဲ့အဝိိုင်း in ဖစပ ီ်း၊ တေော အဝိိုင်း တ ြောဲ့ min ဖစ ါ ယ။ ပ ီ်း ြောေို့ out အခေ်း နငဲ့

min အခေ်း swap လို မယ။

Swap(0,6) ဆိိုတ ြောဲ့ 10, 33, 11, 55, 77, 90, 44 ဆိိုပ ီ်းရမယ။ အငယဆို်း ိေ်း ဖစ ဲ့ 10 ဟြော

တရဲ့ဆို်းတရြော သွေြော်းပ ီ ဖစ ါ ယ။ Bubble sort ဟြော စက ိမပ ီ်း င


ိို ်း အက ီ်းဆို်း စလို်း

တေော တရြော ယ။ Selection sort တ ြောဲ့ စက ိမပ ီ်း ိိုင်း အငယဆို်း စခေ်း

တရဲ့တရြော ါ ယ။ ဒါတ ြောငဲ့ စက ိမပ ီ်းရင တရဲ့ စခေ်း တလ ြောဲ့တလ ြောဲ့ပ ီ်း ွေ မြော ဖစ ါ ယ။

219 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Out 1: min = 1

in 2 : 10, 33, 11, 55, 77, 90, 44 , min = 2

in 3 : 10, 33, 11, 55, 77, 90, 44 , min = 2

in 4 : 10, 33, 11, 55, 77, 90, 44 , min = 2

in 5 : 10, 33, 11, 55, 77, 90, 44 , min = 2

in 6 : 10, 33, 11, 55, 77, 90, 44 , min = 2

ပ ီ်း ြောေို့ out အခေ်း နငဲ့ min အခေ်း swap လို မယ။

Swap(1,2) ဆိိုတ ြောဲ့ 10, 11, 33, 55, 77, 90, 44 ဆိိုပ ်းီ ရမယ။ ဒို ယ
ိ အငယဆို်း ိေ်း ဖစ ဲ့

11 ဟြော 1 အခေ်း ိို တရြော သွေြော်းပ ီ ဖစ ါ ယ။ ဒါတ ြောငဲ့ တေော စခေ်းထ ပ ီ်း တလ ြောဲ့ ွေ မြော

ဖစ ါ ယ။

Out 2: min = 2

in 3: 10, 11, 33, 55, 77, 90, 44, min = 2

in 4: 10, 11, 33, 55, 77, 90, 44, min = 2

in 5: 10, 11, 33, 55, 77, 90, 44, min = 2

in 6: 10, 11, 33, 55, 77, 90, 44, min = 2

ပ ီ်း ြောေို့ out အခေ်း နငဲ့ min အခေ်း swap လို မယ။ Swap(2,2) ဆိိုတ ြောဲ့ 10, 11, 33, 55, 77, 90,

44 ဆိိုပ ီ်းရမယ။

220 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Out 3: min = 3

in 4: 10, 11, 33, 55, 77, 90, 44 min = 3

in 5: 10, 11, 33, 55, 77, 90, 44 min = 3

in 6: 10, 11, 33, 55, 77, 90, 44 min = 6

ပ ီ်း ြောေို့ out အခေ်း နငဲ့ min အခေ်း swap လို မယ။ Swap(3,6) ဆိိုတ ြောဲ့ 10, 11, 33, 44, 77, 90,

55 ဆိိုပ ီ်းရမယ။

Out 4: min = 4

in 5: 10, 11, 33, 44, 77, 90, 55 min = 4

in 6: 10, 11, 33, 44, 77, 90, 55 min = 6

ပ ီ်း ြောေို့ out အခေ်း နငဲ့ min အခေ်း swap လို မယ။ Swap(4,6) ဆိိုတ ြောဲ့ 10, 11, 33, 44, 55, 90,

77 ဆိိုပ ီ်းရမယ။

Out 5: min = 5

in 6: 10, 11, 33, 44, 55, 90, 77 min = 6

ပ ီ်း ြောေို့ out အခေ်း နငဲ့ min အခေ်း swap လို မယ။ Swap(5,6) ဆိိုတ ြောဲ့ 10, 11, 33, 44, 55, 77,

90 ဆိိုပ ီ်းရမယ။ စစဖိို့ို စလို်း ျေတ ြောဲ့ ြောတ ြောငဲ့ sorting စီလိိုို့ပ ီ်းသွေြော်းပ ီ ဖစ ါ ယ။

ဒီတလြော ဆိို ေော်းလညတလြော မယ ထင ါ ယ။

ထ ပ ီ်း ိို ေ
ွေ ်း ါရတစ။ တလဲ့ ျငဲ့ခေ်းတ ွေလို ါ။ မျြော်းမျြော်း Trace လိို ါ။

221 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

တလဲ့ကျငဲ့ ကညဲ့ ကပါ။

1. LA = 44, 33, 11, 55, 77, 90, 40, 60, 99, 22, 88, 66 ိို Selection sort အလွေယေည်း ဖငဲ့

sorting လို ါ။

2. Selection sort algorithm ိို က ီ်းစဉငယလိို အ ွေ ေတရ်းတ ်း ါ။

3. Question 1 ိို Question 2 ွေငတရ်းထြော်း ဲ့ က ီ်းစဉငယလိို algorithm ဖငဲ့ trace

လိို ါ။

Insertion Sort

insertionSort(LA, N)

1. Set UB = N – 1

2. Repeat for out =1 to UB by 1

3. Set temp = LA [out]

4. in = out

5. Repeat while in>0 and LA[in-1] >= temp then:

6. LA[in] = LA [in -1]

7. in = in -1

8. End of Loop

9. LA [in] = temp

10. End of loop

Insertion sort စခိုခို ိို အတသထြော်းပ ီ်း တရဲ့ အခေ်းတ ွေေို့ ိို ြော ဖစ ါ ယ။

မငသြောတအြောင Trace လိို ညဲ့လိို ရတအြောင။ အတ ေါ်မြော တ ြောတ ြောရင်းခဲ့ပ ီ်းပ ီဆိိုတ ြောဲ့ ဒီ စခါ

အမျြော်းက ီ်း မရင်း Trace လိို ညဲ့ ါ ဲ့မယ။

222 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

44, 33, 11, 55, 77, 90, 10

N = 7, UB = 7- 1 =6

Out 1:

Temp = LA [1] = 33

in ဟြော out တေ 0 ထ က ီ်း ဲ့ အထိ သွေြော်းမြော ဖစ ါ ယ။

in 1: 44, 33, 11, 55, 77, 90, 10

in -1 အခေ်းနငဲ့ temp ေို့ ိို ါမယ။ temp ထ က ီ်းခဲ့ရင in – 1 အခေ်းထ

ေဖိို်း ိို in အခေ်းထ ထညဲ့မြော ဖစ ါ ယ။

44, 44, 11, 55, 77, 90, 10

in 0: in ိို ၁ တလ ြောဲ့သွေြော်းလိိုို့ 0 တရြော ခဲ့ရင သိမ


ိုို့ ဟို temp ထ မက ီ်းတ ြောဲ့ရင in

အခေ်းထ ိို temp ထညဲ့မယ။

LA[0] = temp

33, 44, 11, 55, 77, 90, 10

Out 2:

temp = LA[2] = 11

in 2: 33, 44, 11, 55, 77, 90, 10

in-1 အခေ်း ေဖိို်းဟြော temp ထ က ီ်းလိိုို့ in ထ in – 1 ိို ထညဲ့မယ။

223 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

33, 44, 44, 55, 77, 90, 10

in 1: 33, 44, 44, 55, 77, 90, 10

in -1 အခေ်း ေဖိို်းဟြော temp ထ က ီ်းလိိုို့ in ထ in – 1 ိို ထညဲ့မယ။

33, 33, 44, 55, 77, 90, 10

in 0: a[in] = temp

11, 33, 44, 55, 77, 90, 10

Out 3:

temp = LA[3] = 55

in 3: 11, 33, 44, 55, 77, 90, 10

in-1 အခေ်း ေဖိို်းဟြော temp မက ီ်းတ ြောဲ့လိိုို့ looping ထ ထွေ မယ။

LA[in] = temp

LA[ 3] =temp

11, 33, 44, 55, 77, 90, 10

Out 4:

temp = LA[4] = 77

in 4: 11, 33, 44, 55, 77, 90, 10

in-1 အခေ်း ေဖိို်းဟြော temp မက ီ်းတ ြောဲ့လိိုို့ looping ထ ထွေ မယ။

224 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

LA[in] = temp

LA[ 4] =temp

11, 33, 44, 55, 77, 90, 10

Out 5:

temp = LA[5] = 90

in 5: 11, 33, 44, 55, 77, 90, 10

in-1 အခေ်း ေဖိို်းဟြော temp မက ီ်းတ ြောဲ့လိိုို့ looping ထ ထွေ မယ။

LA[in] = temp

LA[ 4] =temp

11, 33, 44, 55, 77, 90, 10

Out 6:

temp = LA[6] = 10

in 6: 11, 33, 44, 55, 77, 90, 10

in -1 အခေ်းနငဲ့ temp ေို့ ိို ါမယ။ temp ထ က ီ်းခဲ့ရင in – 1 အခေ်းထ ေဖိို်း ိုိ in

အခေ်းထ ထညဲ့မြော ဖစ ါ ယ။

11, 33, 44, 55, 77, 90, 90

in 5: 11, 33, 44, 55, 77, 90, 10

225 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

in -1 အခေ်းနငဲ့ temp ေို့ ိို ါမယ။ temp ထ က ီ်းခဲ့ရင in – 1 အခေ်းထ

ေဖိို်း ိို in အခေ်းထ ထညဲ့မြော ဖစ ါ ယ။

11, 33, 44, 55, 77, 77, 90

in 4: 11, 33, 44, 55, 77, 90, 10

in -1 အခေ်းနငဲ့ temp ေို့ ိို ါမယ။ temp ထ က ီ်းခဲ့ရင in – 1 အခေ်းထ

ေဖိို်း ိို in အခေ်းထ ထညဲ့မြော ဖစ ါ ယ။

11, 33, 44, 55, 55, 77, 90

in 3: 11, 33, 44, 55, 77, 90, 10

in -1 အခေ်းနငဲ့ temp ေို့ ိို ါမယ။ temp ထ က ီ်းခဲ့ရင in – 1 အခေ်းထ

ေဖိို်း ိို in အခေ်းထ ထညဲ့မြော ဖစ ါ ယ။

11, 33, 44, 44, 55, 77, 90

in 2: 11, 33, 44, 55, 77, 90, 10

in -1 အခေ်းနငဲ့ temp ေို့ ိို ါမယ။ temp ထ က ီ်းခဲ့ရင in – 1 အခေ်းထ

ေဖိို်း ိို in အခေ်းထ ထညဲ့မြော ဖစ ါ ယ။

11, 33, 33, 44, 55, 77, 90

in 1: 11, 33, 44, 55, 77, 90, 10

in -1 အခေ်းနငဲ့ temp ေို့ ိို ါမယ။ temp ထ က ီ်းခဲ့ရင in – 1 အခေ်းထ

ေဖိို်း ိို in အခေ်းထ ထညဲ့မြော ဖစ ါ ယ။

226 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

11, 11, 33, 44, 55, 77, 90

in 0: loop ထ ထွေ LA[in] = temp

LA[0] = temp

10, 11, 33, 44, 55, 77, 90

တလဲ့ကျငဲ့ ကညဲ့ ကပါ။

1. Sorting Algorithm တ ွေ ဖစ ဲ့ Bubble Sort, Selection Sort နငဲ့ Insertion sort ၃ ခိုမြော

ဘယ စခိုဟြော အလို လို ရ ြော အသ သြောဆို်းလိိုို့ ထင ါသလ။ Trace လိို ထြော်း ြော ိို

ညဲ့ပ ီ်း အ မ်းဖျင်း သိနိိုင ါ ယ။

2. LA = 44, 33, 11, 55, 77, 90, 40, 60, 99, 22, 88, 66 ိို Insertion sort algorithm ဖငဲ့

sorting စီ ါ။

3. Insertion sort algorithm ိို က ီ်းစဉငယလိို စီရေ ငတရ်းတ ်း ါ။

4. LA = 44, 33, 11, 55, 77, 90, 40, 60, 99, 22, 88, 66 ိို Insertion sort algorithm ဖငဲ့

က ီ်းစဉငယလိို စီတ ်း ါ။

Merge Sort

Merge sort ရဲ့ ွေ ို ွေ ေည်း Divide and Conquer စ


ို ဖစ ါ ယ။ ထမတ ြောဲ့

အစိ အ ိိုင်း ငယငယတလ်း ဖစတအြောင ခွေခွေသွေြော်းမယ၊ ခွေလိပိုို့ ီ်းမ ေတ ါင်း ြော ဖစ ါ ယ။

44, 33, 11, 55, 77, 90, 10, N = 7

227 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

အရငဆို်း နစ ိုင
ိ ်း င
ိို ်း ါမယ။ တရဲ့အ င
ိို ်း 0 to N/2 အထိ ဖစပ ီ်း တေော အ ိိုင်း တ ြောဲ့ N/2+1 to

N-1 အထိ ဖစ ါ ယ။ ထမ င
ိို ်း 0 to N/2 = 3, ဒို ိယ ိိုင်း N/2+1 to N-1 → 4 to 6

44 33 11 55 77 90 10

44 33 11 55 77 90 10

Divide

44 33 11 55 77 90

11 55
Conquer 33 44 77 90

10 77 90
11 33 44 55

10 11 33 44 55 77 90

▪ အတ ေါ်ဆို်း တေ Divide ဆိိုပ ီ်း စြော ေ်းထိို်း ထြော်း အ


ဲ့ ထိ ခွေ ဲ့အ င
ိို ်း ါ။ ထ ခါ ထ ခါ

ခွေ ါ ယ။ ဘယထိခွေမလဆိိုရင စခို ျေတ ြောဲ့ပ ီ်း ထ ခွေလိိုို့ မရတ ြောဲ့ အ


ဲ့ ထိ ထ ခါ

ထ ခါ ခွေ ါမယ။

▪ Conquer လိိုို့ စြော ေ်းထိို်း ထြော်း ဲ့ တေရြော တေ စပ ီ်း ေတ ါင်း ြော ါ။ ဘြောလိိုို့

အဒီတေရြော တေ ေတ ါင်း ြောလဆိိုရင ခွေ ြော စခိုစီ ျေတ ြောဲ့လိိုို့ ထ ခွေစရြော

မရိတ ြောဲ့လိိုို့ ေတ ါင်း ြော ါ။ တ ါင်း ဲ့ အချိေမြောတ ြောဲ့ ိို စစပ ီ်း တ ါင်း ါ ယ။

ငယစဉက ီ်းလိို ဆိို ငယ ြောာ‌ တရဲ့ ထြော်းပ ီ်း ေတ ါင်း ြော ဖစ ါ ယ။ တေော ဆို်း အြော်းလို်း

တ ါင်းပ ီ်းသွေြော်းပ ီ ဆိိုမ sorting စီပ ီ်းသြော်း array ိို ရမြော ဖစ ါ ယ။

228 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye


ို ို့ ရင်း ထြော်း ဲ့ စြော ိို ွေ ညဲ့လိို ရင သတဘြောတ ါ မယထင ါ ယ။

mergesort( a ) /*accept an array as parameter*/

1. if N == 1 then:

return a

2. L1 = a[0] ... a[N/2]


3. L2 = a[N/2+1] ... a[N - 1]
4. L1 = mergesort( L1 )
5. L2 = mergesort( L2 )
6. return merge( l1, Length(L1)-1, l2, Length(L2)-1 )

Line 1 and Line 2: မြောစစထြော်း ြော array size စခို ျေ ြောလြော်း။ ဒါဆိို ခွေစရြောမလိိုတ ြောဲ့လိိုို့

လ ခထြော်း ဲ့ array a ိို return ေတ ်းလိို ယ။

Line 2 and Line 3: မြော ဝငလြော ဲ့ a array တလ်း ိို 0 to N/2 အထိ ိို array စခို၊ N/2+1 to N-1

အထိ ိို array စခို ဆိိုပ ီ်း array ၂ ခိုခွေလိို ြော ဖစ ါ ယ။

Line 4 and Line 5: ခွေထြော်း ဲ့ array ၂ ခို ိို 1 ခေ်း ျေတ ြောဲ့ ဲ့ အထိ ထ ခါ ထ ခါ ခွေချငလိိုို့

recursion ေတခေါ်လိို ြော ဖစ ါ ယ။

Line 6 : တ ြောဲ့ ခွေထြော်း ဲ့ array 2 ခို ိို ေတ ါင်းဖိို့ို merge function ိို လမ်းတခေါ် ြော ဖစ ါ ယ။

ထမ array ရယ၊ သူူ့ရဲ့ upper bound ရယ၊ ဒို ယ


ိ array ရယ၊ သူူ့ရဲ့ upper bound ရယ

ထညဲ့တ ်းလိို ြော ဖစ ါ ယ။ upper bound ဆိို ြော array အခေ်းအတရအ ွေ length ထ တေ

1 နို ြော သိပ ီ်း ဖစမြော ါ။

merge( a, UBA, b, UBB )

/* two arrays a and b, UBA is upper bound of a array, UBB is upper bound of b array*/

1. declare c as array

229 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

2. Set ia =0 /*index for a*/


3. Set ib = 0 /* index for b*/
4. Set ic = 0 /* index for c array to store sorted values*/
5. Repeat while ia<= UBA and ib<=UBB: /*while a and b have elements */
6. if a[ia] < b[ib] then:
7. c[ic] = a[ia];
8. ia = ia + 1
9. Else:
10. c[ic]= b[ib]
11. ib = ib + 1
12. ic = ic +1
13. End of Loop
14. Repeat while ia <= UBA: /* a has elements but b hasn’t*/
15. c[ic] = a[ia];
16. ia = ia + 1
17. ic = ic + 1
18. End of Loop
19. Repeat while ib <= UBB: /* b has elements but a hasn’t*/
20. c[ic] = a[ib];
21. ib = ib + 1
22. ic = ic + 1
23. End of Loop
24. return c
▪ Line 1 : အတ ဖထညဲ့ဖိို့ို array c တ ငြော ယ။

▪ Line 2, Line 3, Line 4 : array a ိိုတထြော ဖိိုို့ ia, array b ိို တထြော ဖိိုို့ ib, array c ိို တထြော ဖိိုို့

ic ဆိိုပ ီ်း သ မ ယ။ ပ ီ်းတ ြောဲ့ အစဆို်း 0 ခေ်း တေ စတထြော မြော ဖစလိိုို့ variable 3 ခို

လို်းထ 0 ထညဲ့လိို ယ။

▪ Line 5 to Line 13: Array a တရြော၊ Array b နစခိုလို်း data ရိတေတသ်း ဲ့ အချိေ။

230 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

ေမူေော ညဲ့ ရတအြောင။

ia =0, ib = 0 , ic =0

a = { 11,22}, b= {10, 55, 77}

ia, ib 0 ဖစတေ ဲ့အ ွေ a[0] ေို့ b[0] ေို့ ိို မယ။ b[0] ငယတ ြောဲ့ b[0] ိို c[ic], c[0]

ထ သွေြော်းထညဲ့မယ။ b ိို ထညဲ့လိို ြော ဖစလိိုို့ ib ိို ၁ ်းိို မယ။ c ထ ထညဲ့ ြော ဖစလိိုို့ ic

ိိုလည်း ၁ ိို်းမယ။ ia တ ြောဲ့ ထိစရြောမလိိုဘူ်း။

ia =0, ib = 1, ic =1, c ={10}

ဒီ စခါ a[ia] ေို့ b[ib] ိို ညဲ့မယ။ a[0] ေို့ b[1] ဖစ ယ။ a[0] ငယ ယ။ ဒီတ ြောဲ့

c[ic] ထ ိို a[ia] ိို ထညဲ့မယ။ ပ ီ်းရင ia, ic ိို ၁ ်းိို မယ။ ib ိို ထိရေမလိို။

ia = 1, ib = 1, ic =2, c{10,11}

**သ ိထြော်းမိမြော ါ။ a ထညဲ့ရင ia ိို စ ိို်း ယ။ b ထညဲ့ရင ib ိို စ ်းိို ယ။ c

တ ြောဲ့ ဘြော ဖစ ဖစ အပမအထညဲ့ခတေရ ြော ဖစလိိုို့ a ေို့ b ဘယသူ ငယငယ ic တ ြောဲ့ အပမ

စ ို်းိ ရ ါ ယ။ ဒါတ ြောငဲ့ ic စ ို်းိ ြော ိို if ေို့ else ထမြော မတရ်း line 12 မြော

ထို တရ်းထြော်း ြော ဖစ ါ ယ။ If ထ စခါ၊ else ထ စခါ၊ နစခါ မတရ်းချငလိိုို့ ဖစ ါ ယ။***

ဒီ စခါ ိို စစရမြော a[1] ေို့ b[1] ဖစ ယ။ a[1] ငယ ယ။ ဒီတ ြောဲ့ c[ic] ထ ိို

a[ia] ိို ထညဲ့မယ။ ပ ီ်းရင ia, ic ိို ၁ ိို်းမယ။ ib ိို ထိရေမလိို။

ia = 2, ib = 1, ic =3, c{10,11,22}

231 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

ညဲ့ ညဲ့လိို ါ။ a a = { 11,22} ဆိိုပ ီ်း 0,1 နစခေ်း ရိ ြော ိို c ထ အ ိုေထညဲ့ပ ီ်းသွေြော်းလိိုို့

ia ေဖိို်း 2 ဖစပ ီ်း UBA = 1 ထ က ီ်းသွေြော်းပ ီ။ ဆိိုလိို ြော a, b နစခို မရိတ ြောဲ့ဘူ်း။ b

ျေတ ြောဲ့ ယ။ b {10, 55, 77} ဆိိုပ ီ်း 0,1,2 သို်းခေ်းရိ ြော 0 စခေ်းထညဲ့ပ ီ်းလိိုို့ ib 1

ဖစတေ ယ။ array နစခိုလို်း ရတ


ိ ေရင ြော ိို စစပ ီ်း ထညဲ့ရ ြော ဖစ ါ ယ။ အခိုတ ြောဲ့ b

array စခို ျေတ ြောဲ့လိိုို့ ိို စရြောမလိို b ထ ဟြောတ ွေ ိို ူ်းထညဲ့ဖိို့ို

ျေ ါတ ြောဲ့ ယ။

ကူ်းထညဲ့မယ။

ဘယ စပ ီ်း ူ်းထညဲ့မလဆိိုရင 0 ခေ်းထညဲ့ပ ီ်းလိိုို့ ib 1 ဖစတေတ ြောဲ့ 1 တေ UBB ထိ

ူ်းထညဲ့မြော ဖစ ါ ယ။ ဒါဆိို b {10, 55, 77} ရိ ြောဆိိုတ ြောဲ့ UBB 2 ဖစလိိုို့ 1,2

နစခေ်း ူ်းထညဲ့ ါမယ။ ခိုေ ic 3 ဖစတေ ါပ ီ။

c [3] = b[1] , c = c{10,11,22, 55}

c[4] = b[2], c{10,11,22, 55, 77}

ညဲ့ ါ c ထ ိို b ထညဲ့ ြော ဖစလိိုို့ စက ိမပ ီ်း ိိုင်း ic ေို့ ib ိို 1 ိို်း ါ ယ။ အခိုဟြော b

ျေတေခဲ့ လိိုို့ b ထ ေဖိို်းတ ွေ c ထ ူ်းထညဲ့ ြော ိို ြော ဖစ ါ ယ။ a ျေခရ


ဲ့ ငလည်း a

ထ ဟြောတ ွေ ိို ထိိုေည်းအ င


ိို ်း ူ်းထညဲ့ရမြော ဖစ ါ ယ။

Algorithm မြော a ျေသလြော်း စစ ြော line 14 to Line 18 ဖစ ါ ယ။

b ျေသလြော်း စစ ြော line 19 to Line 23 ဖစ ါ ယ။

232 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

တေော ဆို်းတ ြောဲ့ a ေို့ b ိို ငယစဉက ီ်းလိို တ ါင်းပ ီ်းသြော်း array c ိို return ေတ ်းလိို ြော

ဖစ ါ ယ။ ဒါဆိိုရငတ ြောဲ့ merge sort ိို ေော်းလညတလြော ပ ီထင ါ ယ။

တလဲ့ကျငဲ့ ကညဲ့ ကပါ။

1. Merge sort ိို က ီ်းစဉငယလိို စီချငရင ဘယတေရြော ိို တ ြောင်းရမညေည်း။

2. LA = 44, 33, 11, 55, 77, 90, 40, 60, 99, 22, 88, 66 ိို Merge sort algorithm ဖငဲ့

ငယစဉက ီ်းလိို sorting စီ ါ။

Quick Sort

Quick sort တ ြောဲ့ တေော ဆို်းအခေ်း ိို pivot လိိုယ


ို့ ူ ါ ယ။ ပ ီ်းရင pivot ထ ငယ ြော

စ ိိုင်း၊ က ီ်း ြော စ ိိုင်း နစ ိုင


ိ ်းခွေ ါ ယ။ ခွေလိို ဲ့ အ င
ိို ်း စ င
ိို ်းချင်း ိိုလည်း တေော ဆို်း

အခေ်း ိို pivot ယူပ ီ်း ပ ီ်းရင pivot ထ ငယ ြော စ ိိုင်း၊ က ီ်း ြော စ ိိုင်း နစ ိုင
ိ ်းထ ခွေ ါ ယ။

ေမူေောအတေေို့ တ ြောရရင

▪ 44, 33, 11, 55, 77, 90, 22, 66 ဆိိုရင piviot 66 ဖစ ါမယ။

▪ စက ိမ loop ပ ီ်းရင {44, 33, 11, 55, 22} 66 {77, 90} ဆိိုပ ီ်း pivot ထ ငယ ြော

စအို စို၊ pivot၊ pivot ထ က ီ်း ြော စအို စိုဆိိုပ ီ်း ၃ အို စို ရ ါမယ။ {44, 33, 11, 55,

22} ရဲ့ order ဟြောအတရ်းမက ီ်း ါဘူ်း။ အတရ်းက ီ်း ြော တရဲ့အ င
ိို ်းထမြော 66 ထ

ငယ ြောတ ွေချည်း ါမယ။ တေော အ င


ိို ်းထမြော 66 ထ က ီ်း ြောတ ွေချည်း ါမြော ဖစ ါ ယ။

▪ ပ ီ်းရင pivot ထ ငယ ြော ထ ွေ ၊ pivot ထ က ီ်း ြော သ သ ေ ွေ မယ။

ဒါတ ြောငဲ့ quick sort ဟြောလည်း recursion ဖစမြော ဖစ ါ ယ။

233 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

▪ {44, 33, 11, 55, 22 } ိို ထ ွေ ရင pivot = 22

{11} 22 {44, 33, 55}

ဒီတ ြောဲ့ Quick Sort ဆိို ြော တေော ဆို်းအခေ်း ိို pivot ယူပ ီ်း pivot ထ ငယ ြော စ ိိုင်း၊ pivot၊

pivot ထ က ီ်း ြော စ ိိုင်းဆိိုပ ီ်း ိိုင်း ယ။

ပ ီ်း ရငငယ ဲ့ က ီ်း ဲ့ အ င


ိို ်းတ ွေ ိို recursion ေို့ ေ ွေ ယ။ တေော ဆို်း စခို ျေတ ြောဲ့ ဲ့

အထိ recursion တခေါ်ပ ီ်း ေ ွေ ရမယ။

quickSort(LA, LB, UB)

1. if LB < UB then:
2. Loc = partition(LA, LB, UB)
3. quickSort(LA, LB, Loc-1)
4. quickSort(LA, Loc+1, UB)

QuickSort algorithm တေ partition function ိိုလမ်းတခေါ် ယ။ partition function return

ေတ ်းလိို ဲ့ location အတ ေါ်မူ ညပ ီ်း ငယ ြော စ ိိုင်း၊ က ီ်း ြော စ ိိုင်း ထ ခွေ ယ။

ခွေထြော်း ဲ့ နစ ိုင
ိ ်းအ ွေ recursion ေတခေါ် ယ။ ဒါ ါ ။

partition( LA, LB, UB)

1. Loc = LB
2. pivot = LA[UB]
3. Left = LB
4. Right = UB
5. Repeat while true:
6. Repeat while LA[left ] < pivot:
7. Left = Left + 1
8. End of Loop
9. Repeat while LA[Right] >= pivot and Right>LB:

234 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

10. Right = Right – 1


11. End of Loop
12. If left >=right then:
13. Break
14. Else:
15. swap (Left , right)
16. End of Loop
17. Swap (Left, UB)
18. Return Left
▪ Left LB၊ right UB တေစမယ။ ဒါတ ြောငဲ့ left ဟြော Right ထ ငယ ယ။ Left ဟြော

Right ထ ငယတေသတရဲ့ တအြော အလို တ ွေ ိို ထ ခါထ ခါလို မယ(Line 5,12 and

13)။ Line 5 while true ဆိိုတ ြောဲ့ loop ဘယတ ြောဲ့မ မထွေ ဘူ်း၊ ဒါ ိုိ line 12 and

13 left>=right ဆိိုရင break ဆိိုပ ီ်း ထွေ စ ြော ဖစ ါ ယ။ Break ဆိို ြော loop

ထတရြော တေရင loop ထ တေ ရို ရ ခိုေထွေ ြော ဖစ ါ ယ။ ဒါတ ြောငဲ့ break ိို

jump statement လိိုို့ တခေါ် ါ ယ။

▪ ပ ီ်းရင left အခေ်းထ ေဖိို်း pivot ထ ငယတေသမ left ိို ၁ ိို်းမယ။ ဆိိုတ ြောဲ့ left

အခေ်း ေဖိို်း pivot ထ က ီ်းရင သိမ


ိုို့ ဟို ညီရင ရ မယ။ (Line 6 to 8)

▪ ပ ီ်းရင Right အခေ်းထ ေဖိို်း pivot ထ က ီ်းပ ီ်းညီမယ၊ Right သည LB ထ

က ီ်းတေတသ်းသမ Right ိို 1 တလ ြောဲ့မယ။ ဆိိုတ ြောဲ့ right အခေ်း ေဖိို်း pivot ထ ငယရင

ရ မယ။(Line 9 to 11)

▪ ပ ီ်းသွေြော်းလိိုို့

1. Left >=Right ဆိို break လို မယ။ break ဆိို ြော ိို outer loop ထ မြော တရ်းထြော်း ြော

ဖစလိိုို့ outer loop ထ ထွေ ါမယ။ break ဆိို ြောတရြော ဲ့တေရြော တေ ထွေ ြော

ဖစ ါ ယ။

235 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

▪ Outer loop ထ ထွေ ြောေို့ swap(left, UB) လို မယ။(Line 17)

▪ Left ိို return ေ ယ။ (Line 18)

▪ ဒီတ ြောဲ့ partition function ိို call တခေါ်ထြော်း ဲ့ quicksort ိို ေတရြော ပ ီ်း 0

to Left- 1 စ ိိုင်း၊ left ၊ Left+1 to UB ဆိိုပ ီ်း ၃ ိိုင်း င


ိို ်း ါ ယ။

▪ 0 to Left- 1 , Left+1 to UB ို့အ


ိို ွေ recursion ေတခေါ် ါမယ။

2. left Right ထ ငယတေ ယဆိိုရင Left ေို့ Right ိို တေရြောချင်းလမယ။ ပ ီ်းရင end

of loop ဆိိုလိိုို့ outer loop (Linef 5) ိို ေ ယ။ outer loop ရဲ့ condition

တေရြောမြော True ထညဲ့ထြော်းလိိုို့ looping ဟြော ဘယတ ြောဲ့မ မထွေ တ ြောဲ့ တေမြော

ဖစ ါ ယ။ ဒါတ ြောငဲ့ တအြော မြော break ိို သို်းပ ီ်း ထွေ ရ ြော ဖစ ါ ယ။ (Line 12

and 13)

Trace လိို ညဲ့ ရတအြောင။

Left = LB = 0

Right = UB = 7

44, 33, 11, 55, 77, 90, 22, 66: pivot = 66

Left ိို 1 ်းိို ိို်းပ ီ်း အခေ်းထ ေဖိို်း pivot ထ ငယသတရဲ့ တရဲ့ ယ။

77(left = 4) မြောက ီ်းတ ြောဲ့ ရ မယ။

Right ိို 1 တလ ြောဲ့တလ ြောဲ့ပ ီ်း အခေ်းထ ေဖိို်း pivot ထ က ီ်းပ ီ်းညီသတရဲ့ တရဲ့ ယ။

22(Right = 6) မြော ငယတ ြောဲ့ရ ယ။

Left (4) >= Right(6) ဆိိုတ ြောဲ့ false ဖစလိိုို့ swap (Left, Right) လို မယ။

236 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Swap (4, 6)

44, 33, 11, 55, 22, 90, 77, 66, Left =4, Right = 6

Left ိို 1 ်းိို ိို်းပ ီ်း အခေ်းထ ေဖိို်း pivot ထ ငယသတရဲ့ တရဲ့ ယ။

90(left = 5) မြောက ီ်းတ ြောဲ့ ရ မယ။

Right ိို 1 တလ ြောဲ့တလ ြောဲ့ပ ီ်း အခေ်းထ ေဖိို်း pivot ထ က ီ်းပ ီ်းညီသတရဲ့ တရဲ့ ယ။

22(Right = 4) မြော ငယတ ြောဲ့ရ ယ။

Left (5) >= Right(4) ဆိိုတ ြောဲ့ true ဖစလိိုို့ break ဆိိုပ ီ်း outer loop ထ ထွေ မယ။

Outer loop အ ငမြော swap(Left, UB) ဆိိုတ ြောဲ့ swap (5,7)

44, 33, 11, 55, 22, 66, 77, 90

Return left လို လိို တ ြောဲ့ return 5 ဖစသွေြော်းမယ။

LB to Left-1( 0 – 4), left(5), left+1 to UB(6 to 7) ဆိိုပ ီ်း 3 ိိုင်းခွေတ ြောဲ့

{44, 33, 11, 55, 22} 66 {77,90} ဆိိုပ ီ်းရမယ။

Recursion for {44, 33, 11, 55, 22} 66 Recursion for {77, 90} ဆိိုပ ီ်းရမယ။

Recursion for {44, 33, 11, 55, 22} : Pivot = 22, LB =0, UB = 4, Left = LB = 0, Right = UB = 4

44, 33, 11, 55, 22 (left 44 မြော pivot ထ က ီ်းတ ြောဲ့ရ , Right 11 မြော pivot ထ ငယလိရ
ိုို့ )

Left(0) >= Right (2) false ထွေ လိိုို့ Swap(left, right) = Swap(0, 2) လို မယ။

237 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

11, 33, 44, 55, 22

Left(0) တေ အခေ်းေ ါ ၁ ိို်း ိို်း ဆ သွေြော်း 33(1) မြော pivot ထ က ီ်းလိိုို့ ရ ယ၊

Right(2) တေ အခေ်းေ ါ ၁တလ ြောဲ့တလ ြောဲ့ပ ီ်း ဆ သွေြော်း 0 ခေ်းတရြော လိိုို့ ရ ယ။

Left(1) >= Right (0) ဖစလိိုို့ outer loop ထ ထွေ ။

Swap(Left, UB) ဆိိုတ ြောဲ့ Swap (1, 4) ိို လို ယ။

11, 22, 44, 55, 33

Left ိို retrun ေ။ retrun 1 ဆိိုတ ြောဲ့ 0 to 0, 1, 2 to 4 ဆိိုပ ီ်း 3 င


ိို ်း ိိုင်း ါ ယ။

{11} 22 {44, 55, 33}

{11} 22 Recursion for {44, 55, 33}

Recursion for {44, 55, 33} : Pivot = 33, Left = 2, Right = 4

44, 55, 33 (left 44(2) မြော pivot ထ က ီ်းတ ြောဲ့ရ , Right 44(2) မြော UB တရြော လိိုို့ ရ )

Left(2) >=Right(2) ဆိိုတ ြောဲ့ true ဖစလိိုို့ break ဆိိုပ ီ်း outer loop ထ ထွေ မယ။

Outer loop အ ငမြော swap(Left, UB) ဆိိုတ ြောဲ့ swap (2,4)

33,55,44 ဆိိုပ ီ်းရမယ။

Return 2 ဖစသွေြော်းမယ။

{}, {33}, {55,44} ဆိိုပ ီ်းရမယ။

238 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Recursion {55,44}

55, 44(left 55(2) မြော pivot ထ က ီ်းတ ြောဲ့ရ , Right 55 မြော LB တရြော လိရ
ိုို့ )

Left(2) >= Right (2) ဖစလိိုို့ outer loop ထ ထွေ ။

Swap (Left ,UB) = Swap (2,3)

44,55

Left ိို retrun ေ။ retrun 3 ဆိိုတ ြောဲ့ {}, 3, 4 to UB(4) ဆိိုပ ီ်း 3 င
ိို ်း င
ိို ်း ါ ယ။

{} 44 {55}

Recursion for {44, 33, 11, 55, 22} : {11} 22 Recursion for {44, 55, 33}: 11, 22, 33, 44, 55

Recursion for {77, 90}: Pivot = 90, LB =6, UB = 7, Left = LB = 6, Right = UB = 7

77, 90 (left 90 မြော pivot ေို့ညတ


ီ ြောဲ့ရ , Right 77 မြော LB ခေ်းတရြော လိလ
ိုို့ ိိုို့ရ )

Left(7) >= Right (6) ဆိိုတ ြောဲ့မေလိိုို့ break ဆိိုပ ီ်း outer loop ထ ထွေ ။

Swap(Left, UB) ဆိိုတ ြောဲ့ Swap (7, 7) ိို လို ယ။ 77, 90

Recursion for {44, 33, 11, 55, 22} 66 Recursion for {77, 90}

11, 22, 33, 44, 55, 66, 77, 90 ဆိိုပ ီ်း ရသွေြော်း ါ ယ။

239 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

တလဲ့ကျငဲ့ ကညဲ့ ကပါ။

1. Quick sort ိို က ီ်းစဉငယလိို စီချငရင ဘယတေရြော ိို တ ြောင်းရမညေည်း။

2. LA = 44, 33, 11, 55, 77, 90, 40, 60, 99, 22, 88, 66 ိို Quick sort algorithm ဖငဲ့

ငယစဉက ီ်းလိို sorting စီ ါ။

Chapter အနစချျုပ

▪ ဒီအခေ်းမြော တ ြောဲ့ မသိမ ဖစ အတ ခခ sorting algorithm တ ွေ ိို ရင်း ခဲ့ ြော ဖစ ါ ယ။

စ ခြော်း sorting algorithm တ ွေလည်းရိ ါတသ်း ယ။

▪ Merge sort ေို့ Quick sort တ ြောဲ့ အ င


ိို ်းတလ်းတ ွေခွေခွေပ ီ်း ေစို ဲ့ စ
ို ေို့ သွေြော်း ါ ယ။

▪ ပ ီ်းတ ြောဲ့ သူ ိုို့ိ နစခိုဟြော recursion ဖစ ဲ့အ ွေ space complexity မ


ိို ြော ဖစ ါ ယ။

▪ Algorithm တ ွေ ိို Trace လိို ပ ီ်း ဘယ algorithm တ ြောဲ့ ိပို ီ်း ွေ ရ ယ၊ ဘယ

algorithm ေည်းေည်း ွေ ရ ယဆိိုပ ီ်း ြောချိေ ိို ခေို့မေ်းလိိုို့ရတ မဲ့ time complexity

ချ ွေ ြောတလြော တ ြောဲ့ မ ိ ျနိင


ို ါဘူ်း။

▪ အစ တ ြောဲ့ Algorithm တ ွေရဲ့ time complexity (Worst Case (Big O notation (O)) ေို့

Best Case (Omega Notation (Ω)) ို့ေ


ိို ို့ ါ ွေ ချ ပ ီ်း နိိုင်းယဉ ဖိိုို့ ရညရယခဲ့တ မဲ့

အရမ်း ရှု တထွေ်း ိုေမြော စိို်းလိိုို့ မထညဲ့လိို ါဘူ်း။ တေော အတ ခအတေတ ်းရင algorithm

စခို ိို ဘယလိို space complexity, time complexity ွေ ြောတလ်း လို တ ်း ါမယ။

240 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

“ ျွေမ သိ အ ျင်းက ီ်းတ ြောဲ့

သီချင်းဆိို ဘြောသီချင်း၊ညြောသီချင်း တရ်းဖွေငတေရ


ဲ့ ြော မလို ချငဘူ်း၊

ပ ်းီ တ ြောဲ့ ယ
ိို သီချင်းတရ်းဖွေငဲ့ထြော်းရင

ဘြောပ ်းီ ဘြောလြောတ ြောဲ့မြော သိတေ ြောဆိတ


ို ြောဲ့ ျင်းစရြောက ီ်း၊

ဒီတ ြောဲ့ စြော ွေ ရင တဘ်းမြော FM ဖွေငဲ့ထြော်းလိို ြော ၊

ဒီတ ြောဲ့ စြောလို ရ ြော အထူ်းသ ဖငဲ့ ဒီလိုိ ေော်းလညရခ ြောတ ွေ ိို တလဲ့လြော ဲ့အခါမြော
ျင်းစရြောမတ ြောင်းတ ြောဲ့ဘူ်း၊

အထ ထ အခါခါ ေပ ်းီ trace လိို လည်း FM သြောဖွေငထြော်း


ဲ့

ျင်းစရြောမတ ြောင်းတ ြောဲ့ဘူ်း၊

စ ခြော်းတဘ်း အသတ ွေလည်း မ ြော်းရလိိုို့

အတနောငဲ့အယ လည်း မ ဖစတ ြောဲ့ဘူ်း၊

ပ ်းီ တ ြောဲ့ စြောထစိ ဝငစြော်းသွေြော်းရင

ဘြောသီချင်းလြောတေမေ်းလည်း မသိတ ြောဲ့ဘူ်း”

241 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

အခန်း (၁၄)

Stack, Queue and Hashing

Stack

Stack ရဲ့ နာမည်က ြီးတဲ့ ဥပမာတတွေ တတာဲ့ Pancake ထပ်တာ နဲ့ ပန်ြီး န် ထပ်တာ တဲ့ပ

ဖြစ်ပါတယ်။

ပတ ြီးတတွေ က ညဲ့်က ညဲ့်ပါ။ Pancake ပ်သူဟာ ပန်ြီး န်ဖပာြီးထ pancake တစ်ခတပေါ်

တနာ ်တစ်ခ ထပ်ထပ်ပပြီး တင်သွောြီးတာဖြစ်ပါတယ်။ ဒတတာဲ့ သူတနာ ်ဆြီးတင်ခဲ့တဲ့ pancake ဟာ

အတပေါ်ဆြီးမာ ရတနမာဖြစ်ပါတယ်။ စာြီးသြီးမညဲ့်သူရဲ့ တနရာ တန ဝင်ပပြီး စဉ်ြီးစာြီးက ညဲ့်ပါ။

တအာ ်ဆြီးတစ်ခ တန ဖြစ်ဖြစ်၊ အ ယ်တစ်ခ တနဖြစ်ဖြစ် ယူစာြီးမယ်ဆရင် တသခ ာတပါ ်

ပပြို မာဖြစ်ပါတယ်။ စာြီးမညဲ့်သူ ည်ြီး အဒ ခ ်ခ ်ခခ ဘယ်သူမ ယူမစာြီးပါဘူြီး။

အတပေါ်ဆြီးတစ်ခ တန ယူပပြီးစာြီးမာ ဖြစ်ပါတယ်။

ဒါတက ာငဲ့် pancake ပ်သူတနာ ်ဆြီး ပ်ထာြီးတဲ့ မနဲ့် အတပေါ်ဆြီးမာ ရတယ်။ စာြီးတဲ့သူ

အတပေါ်ဆြီး ဟာ အရင် ယူစာြီး ်တယ်။ ဒီတ ော့ တနောကဆ်းု လုပထ ်း ော့မန


ု ကု အရငစ ်း ယ

နည်းအ ်းဖြငော့ တနောကဆု်းထညော့ အရငဆု်းထွက ဖြစလု LAST IN FIRST OUT (LIFO) –

STACK လု တခေါ်ပါ ယ။

242 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

ဒ ပါပ ပန်ြီး န်ဖပာြီးတဆြီးတသ


ဲ့ ူဟာ တဆြီးတဆြီးပပြီး ပန်ြီး န်ဖပာြီး အတပေါ်

ထပ်ထပ်သွောြီးမယ်။ ထမင်ြီးစာြီးမယ်ဆပပြီးယူရင် အတပေါ် တနပယူတယ်။ ဒတတာဲ့ တနာ ်ဆြီးထညဲ့်တဲ့

ပန်ြီး န် အရင်ဆြီးဖပန်သြီးတာဖြစ် ဲ့ ပန်ြီး န်ဖပာြီးတဆြီးတာ ည်ြီး Stack ပစ

အ ပ် ပ်တာပဖြစ်ပါတယ်။

ထပ်စဉ်ြီးစာြီးက ညဲ့်မယ်ဆရင် ထညဲ့်တယ်၊ အတပေါ် တန ထညဲ့်ထညဲ့သ


် ွောြီးတယ်။ ယူတယ်

အတပေါ် တနပ ယူယူသွောြီးတယ်။ ဒါတ က ငော့ အတပေါ်ဆု ော့ စဘကကတနပ အလုပလုပသွ ်း

ဖြစလု တထ ကြုရ စခုပလုပါ ယ။ အဒါကု top လု တခေါ်ပါ ယ။

နမူနောတလ်း ွက ကညော့ ကရတအ င။


LA ဆတဲ့ array မာ Length 5 ဖြစ်တယ်ဆပါတတာဲ့။ Array ခန်ြီး 5 ခန်ြီးဆတတာဲ့

အခန်ြီးနပါတ် 0 to 4 ဖြစ်ပါမယ်။ ထညဲ့်ရင် 0 ခန်ြီး တနစပပြီး ထညဲ့်ပါ ဲ့မယ်။ ဒါတက ာငဲ့် top = 0 ဆပပြီး

top ထ 0 ထညဲ့်ထာြီး ်ပါမယ်။ အဒထ AA,BB,CC,DD, EE,FF ဆပပြီးထညဲ့်က ညဲ့်က ပါမယ်။

စစခ င်ြီး တစ်ခန်ြီးမ မထညဲ့်ရတသြီးတတာဲ့ top = 0

0 1 2 3 4
ဆပပြီးဖြစ်တနပါ ဲ့မယ်။ ဒတတာဲ့ top 0 ဖြစ်တနတယ် ဆတာ တစ်ခန်ြီးမ မရ ဖဲ့ ြစ်ပါတယ်။ ဒါတက ာငဲ့်

Stack ဟာ empty ဖြစ်တနသ ာြီး(တစ်ခန်ြီးမ မရဘူြီး ာြီး) စစ်ခ င်ရင် top 0 နဲ့ ညသ ာြီး

စစ် ်ရင်ရပါတယ်။

isEmpty()

Return top ==0

ဆပပြီး တရြီး ်ရင်ရပါပပ။

243 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

AA ထညဲ့်မယ်။ ထညဲ့်တာ stack မာ push ပ်တယ် ဲ့ တခေါ်ပါတယ်။ top တန်ြြီး 0

ဖြစ်တနတဲ့ အတွေ ် တစ်ခန်ြီးမ မရတသြီး ဲ့ 0 ခန်ြီး တန စပပြီးထညဲ့်ပါ ဲ့မယ်။ ထညဲ့်ပပြီးတာနဲ့ top

၁ တြီးပါမယ်။

AA
0 1 2 3 4
Top ၁ တြီး ်တတာဲ့ top =1 ဖြစ်သွောြီးပါ ဲ့မယ်။

BB ထညဲ့်မယ်။ 0 အခန်ြီးထညဲ့်ပပြီးတာဖြစ် ဲ့ ဒတစ်ခါ 1 အခန်ြီးထ ထညဲ့်ပါမယ်။

စဉ်ြီးစာြီးက ညဲ့် ်တတာဲ့ top 0 ဖြစ်တနတန်ြီး 0 အခန်ြီးထ ထညဲ့်ပပြီး၊ top 1 ဖြစ်တနတတာဲ့ 1 အခန်ြီးထ

ထညဲ့်တယ်။ ဒတတာဲ့ top အခန်ြီးထ ထညဲ့်တယ် ဲ့ မတ်ရင်ရပါပပ။ ထညဲ့်ပပြီးတာနဲ့ top ၁

တြီးပါမယ်။

AA BB
0 1 2 3 4
top 2 ဖြစ်သွောြီးပါ ဲ့မယ်။

CC ထညဲ့်မယ်။ top 2 ဖြစ်တနတတာဲ့ 2 အခန်ြီးထ CC ထညဲ့မ


် ယ်။

AA BB CC
0 1 2 3 4
ထညဲ့်ပပြီးတာနဲ့ top 1 တြီးတတာဲ့ top 3 ဖြစ်သွောြီးပါ ဲ့မယ်။

244 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

DD ထညဲ့်မယ်။ top 3 ဖြစ်တနတတာဲ့ 3 အခန်ြီးထ DD ထညဲ့်မယ်။

AA BB CC DD
0 1 2 3 4
ထညဲ့်ပပြီးတာနဲ့ top 1 တြီးတတာဲ့ top 4 ဖြစ်သွောြီးပါ ဲ့မယ်။

EE ထညဲ့်မယ်။ top 4 ဖြစ်တနတတာဲ့ 4 အခန်ြီးထ EE ထညဲ့်မယ်။

AA BB CC DD EE
0 1 2 3 4
ထညဲ့်ပပြီးတာနဲ့ top 1 တြီးတတာဲ့ top 5 ဖြစ်သွောြီးပါ ဲ့မယ်။

FF ထညဲ့်မယ်ဆတတာဲ့ EE ထညဲ့်ပပြီး တည်ြီး stack array အခန်ြီးဖပညဲ့်သွောြီးပပ

ဖြစ်ပါတယ်။ ထပ်ထညဲ့် ဲ့မရတတာဲ့ပါဘူြီး။ ဒါတက ာငဲ့် statck ထ ထညဲ့်တတာဲ့မယ် ဆရင်

အခန်ြီးဖပညဲ့် တနပပ ာြီး စစ်ြဲ့ ပါတယ်။ မဖပညဲ့်တသြီးမ ထပ်ထညဲ့် ဲ့ရမာဖြစ်ပါတယ်။

က ညဲ့်က ညဲ့် ်တတာဲ့ top တန်ြြီး 5 မာ ဆ ်ထညဲ့် ဲ့မရတတာဲ့ဘူြီး။ ဘာတက ာငဲ့် ဆရင် array ရဲ့

length ဟာ 5 ဖြစ်တနတတာဲ့ 4 အခန်ြီးထပရ ပ


ဲ့ ါ။ ဒါတက ာငဲ့် top နဲ့ length ညရင် stack array

ဖပညဲ့်သွောြီးပပ တဖပာ ဲ့ရပါတယ်။

isFull()

Return top ==N

ဒမာ သြီးထာြီးတဲ့ N ဆတာ array ရဲ့ length တန်ြြီးပ ဖြစ်ပါတယ်။ ဒတတာဲ့ ထညဲ့်ရင် မဖပညဲ့်တသြီးမ

ထညဲ့် ရ
ဲ့ မာ ဖြစ် ဲ့ ဖပညဲ့်မဖပည်ဲ့ စစ်တပြီးရမာ ဖြစ်ပါတယ်။

245 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

push(Item)

if isFull() then:

return false

Else:

Stack[top]= Item

top = top + 1

Return true

ထညဲ့်တဲ့ push function ထမာ isFull ဆတဲ့ function တခေါ်ပပြီး စစ် ်တယ်။ Full ဖြစ်တနရင်

ထညဲ့်မရတတာဲ့တဲ့ အတက ာင်ြီး false ဖပန်တပြီး ်တယ်။ မဆဲ့တတာဲ့တာ ထပ်ထညဲ့တ


် ာ

OVERFLOW ဲ့တခေါ်ပါတယ်။ မတ်မတအာင်တဖပာရရင် ယဲ့်တခါင်ြီး ်မခနင်တတာဲ့ဘူြီး၊ ဆရာမ

အတင်ြီးစာဆ ်သင်တနရင် ‘တခါင်ြီးရဲ့မတ်နင်စွေမ်ြီး overflow ဖြစ်တနပပ’ ဲ့ တဖပာ ဲ့ရပါတယ်။

ဆ ်တဖပာရရင် full မဖြစ်တသြီးဘူြီး ဆရင် top အခန်ြီးထ ထညဲ့်တယ်။ top 1 တြီးတယ်။ ပပြီးရင်

ထညဲ့်တာ တအာင်ဖမင်တက ာင်ြီး true return ဖပန်တပြီး ်တယ်။

ဖပန်ဆွေထတ်ပါ ဲ့မယ်။ ထတ်တာ Stack မာ pop ပ်တယ် ဲ့ တခေါ်ပါတယ်။ stack ဟာ

တနာ ်ဆြီးဝင်တာ အရင်ထတ်မာ ဖြစ်တာတက ာငဲ့် top တန ဆွေထတ်မာဖြစ်ပါတယ်။

AA BB CC DD EE
0 1 2 3 4
top တန်ြြီး 5 ဖြစ်တနတယ်။ ထတ်မယ်ဆ EE အခန်ြီး 4 ထတ်ရမာ ဖြစ်ပါတယ်။ ဒါတက ာငဲ့် top 5

ဆရင် 4 အခန်ြီးထတ်ခ င်တာဖြစ် ဲ့ top အရင် 1 လ ျှော့ပပြီးမ top အခန်ြီး ဆွေထတ်ရမာ ဖြစ်ပါတယ်။

top ၁လ ျှော့ ်တတာဲ့ top နြု်းက 4 ဖြစမယ။

246 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

top အခန်ြီး return ဖပန်တတာဲ့ return Stack[4] ဆုတ ော့ EE ဆုပပီ်း တနောကဆု်းထညော့ခော့ ော့

အခန်းဖပနရမယ။ stack တတာဲ့ ဒ သတဘာ ဖြစ်သွောြီးမယ်။

AA BB CC DD
0 1 2 3 4
ဒါတက ာငဲ့် pop တရြီးက ညဲ့်မယ်ဆရင် array ခန်ြီး empty ဖြစ်တနရင် ဆွေထတ် မ
ဲ့ ရတတာဲ့ဘူြီး။

မရတာ ဆွေထတ်တာ “UNDERFLOW” ဖြစ်တယ် ဲ့ တခေါ်ပါတယ်။

pop()

If isEmpty() then:
Return NULL

Else:
top = top – 1
Return Stack[top]

ဒမာ အတပေါ်မာ တရြီးခဲ့တဲ့ isEmpty ဆတဲ့ function ဖပန်တခေါ်သြီးပပြီး စစ် ်တာဖြစ်ပါတယ်။

Empty မဖြစ်မခ င်ြီး pop ပ်က ညဲ့်ရတအာင်။ top 4

AA BB CC DD
0 1 2 3 4

top 1 လ ျှော့တတာဲ့ top =3, ဒတတာဲ့ return Stack[3] → return DD

AA BB CC
0 1 2 3 4

247 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Empty မဖြစ်တသြီးတတာဲ့ top 1 လ ျှော့၊ top =2 ဖြစ်, ဒတတာဲ့ return Stack[2] → return CC

AA BB
0 1 2 3 4

Empty မဖြစ်တသြီးတတာဲ့ top 1 လ ျှော့၊ top =1ဖြစ်, ဒတတာဲ့ return Stack[1] → return BB

AA
0 1 2 3 4

Empty မဖြစ်တသြီးတတာဲ့ top 1 လ ျှော့၊ top =0 ဖြစ်, ဒတတာဲ့ return Stack[0] → return AA

0 1 2 3 4
တနာ ်တစ်က မ် စစ်တတာဲ့ top 0 ဆတတာဲ့ empty ဖြစ်သွောြီးပပဆပပြီးရပ်သွောြီးပါမယ်။

ထညဲ့် ်တာ AA, BB, CC, DD, EE

Pop ပ်ခဲ့ ဲ့ return ဖပန်တာတ ြီးတတွေ က ညဲ့်က ညဲ့်ပါ။ ဖပန်ရတာ EE, DD, CC, BB, AA

ဖြစ်ပါတယ်။ ဒါတက ာငဲ့် Stack ဟာ တနာ ်ဆြီးဝင်တာ အရင်ထွေ ်တာဖြစ်ပါတယ်။ ဒမာ algorithm

တ ြီးတတွေ က ာြီးညပ
ှ ်ညှပ်ပပြီး တရြီးဖပခဲ့ပါတယ်။ တသခ ာတ ြီးဖပန်က ညဲ့်ပါတယ်။ နာြီး ည်ပပဆမ

တအာ ် တွေ ်တာ ဆ ်ပပြီး ပ်ပါ။

248 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

နမူနော စပုဒ က
ွ ဖပပါ ော့မယ။ ကျန တ ွကတ ော့ တလော့ကျငော့ ကညော့ ကပါ။

1. Stack: 11, 22, 33, 44, 55, ---, ---, ----

a) Top တန်ြြီး ဘယ်တ ာ ်ဖြစ်မ ဆတာ Stack က ညဲ့်ပပြီး စဉ်ြီးစာြီးပါ။

b) Pop()

c) Pop()

d) Push(66)

e) Push(77)

f) Pop()

g) Push(88)

h) Push(99)

i) Pop()

2. Stack : A, E, I, O, U, -----

a) Push(“BB”)

b) Pop()

c) Push(“CC”)

d) Push(“DD”)

e) Pop()

f) Push(“EE”)

3. Stack is empty and find the output. N is 6.

a) start = 5

b) end = 100

249 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

c) Push(start)

d) Push(end)

e) Push(summation of start to end)

f) Push(count of numbers from start to end)

g) Push(average of start to end)

h) Repeat while !isEmpty():

Write pop (), “ “

Answer of No1:

Stack: 11, 22, 33, 44, 55, ---, ---, ----

a) top = 5

b) Pop()

top = 4 and Stack: 11, 22, 33, 44, ----, ---, ----, ---- and return 55

c) Pop()

top = 3 and Stack: 11, 22, 33, ----, ----, ---, ----, ---- and return 44

d) Push(66)

Stack: 11, 22, 33, 66, ----, ---, ----, ---- and top = 4

e) Push(77)

Stack: 11, 22, 33, 66, 77, ---, ----, ---- and top = 5

250 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

f) Pop()

top= 4 and Stack: 11, 22, 33, 66, ---, ---, ----, ---- and return 77

g) Push(88)

Stack: 11, 22, 33, 66, 88, ---, ----, ---- and top = 5

h) Push(99)

Stack: 11, 22, 33, 66, 88, 99, ----, ---- and top = 6

i) Pop()

top= 5 and Stack: 11, 22, 33, 66, 88, ---, ----, ---- and return 99

Example of Stack

ွေင်ြီးစ ွေင်ြီးပတ် မန်မန် စစ်တာတ ြီး စဉ်ြီးစာြီးက ညဲ့်က ရတအာင်ပါ။

[a * (2 + b)] / 2

ဒ equation မာ ွေင်ြီးစ ွေင်ြီးပတ်တတွေ မန်သ ာြီး ဆတတာဲ့ မန်ပါတယ်။ ဒမာ [ -

တထာငဲ့် ွေင်ြီးအစ အရင် ာပါတယ်။ ပပြီးတတာဲ့ ( - ်သည်ြီး ွေင်ြီးစ ာပါတယ်။ တဟာ ပတ်တတာဲ့

်သည်ြီး ွေင်ြီး အရင်ပတ်ရတယ်။ ပပြီးမ တထာငဲ့် ွေင်ြီး ပတ်ရတယ်။

ဒတတာဲ့ တနာ ်ဆြီး ထညဲ့်ခဲ့တဲ့ ွေင်ြီးစရဲ့ အပတ် အရင် ာရတာဖြစ် ဲ့ stack သြီးပပြီး

စစ် ဲ့ရပါတယ်။ တွေန်ဲ့ ွေင်ြီး {, တထာငဲ့် ွေင်ြီး [, ်သည်ြီး ွေင်ြီး ( ဘယ် ွေင်ြီးစ ာ ာ Stack

တပေါ်တင်ပါ ဲ့မယ်။

▪ ဝင် ာတဲ့ equation ထ character တစ် ြီးခ င်ြီး ယူပါ ဲ့မယ်။

251 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

▪ Character ဟာ ွေင်ြီးစဖြစ်ခဲ့ ရင် ဘာ ွေင်ြီးစ ဖြစ်ဖြစ် Stack တပေါ်တင်ပါ ဲ့မယ်။

တနာ ်ဆြီးတင်တဲ့ ွေင်ြီးစ အရင်စစ်ရမာတက ာငဲ့် Stack အသြီးဖပြိုတာ ဖြစ်ပါတယ်။

▪ ွေင်ြီးပတ် ာပပဆတာနဲ့ Stack တပေါ်တင်ထာြီးတဲ့ ွေင်ြီးစ တစ်ခ pop ပ်ပပြီး

်သည်ြီး ွေင်ြီး ်သည်ြီး ွေင်ြီးခ င်ြီး၊ တထာငဲ့် ွေင်ြီး တထာငဲ့် ွေင်ြီးခ င်ြီး၊ တွေန်ဲ့ ွေင်ြီး

တွေန်ဲ့ ွေင်ြီးခ င်ြီး တူမတူ စစ်ပါ ဲ့မယ်။ မတူရင် ွေင်ြီးစ ွေင်ြီးပတ် ွေတနတာ ဖြစ် ဲ့ မာြီးပါတယ်။

(Unmatch)

▪ တ ယ် ဲ့ ွေင်ြီးပတ် ဝင် ာပပြီး statck empty ဖြစ်သွောြီးပပဆရင် ွေင်ြီးပတ်ပတဲ့ error

ဖြစ်ပါတယ်။ (Extra close bracket)

▪ တ ယ် ဲ့ ဝင် ာစရာ ွေင်ြီးပတ် မရတတာဲ့ဘူြီး၊ statck တပေါ်မာ န်တနတသြီးတယ်

ဆရင် ွေင်ြီးစ ပတဲ့ error ဖြစ်ပါတယ်။ (Extra Open Bracket)

▪ အတပေါ် တဖပာတဲ့ အခ ်တတွေ တစ်ခမ မဖြစ်ခဲ့ဘူြီးဆရင်တတာဲ့ ွေင်ြီးစ ွေင်ြီးပတ် မန် ဲ့

ဖြစ်ပါတယ်။ (Correct)

[a * (2 + b) } / 2

ဝငလ ော့ အလုပလုပပု Stack

Character

[ ွေင်ြီးစဆတတာဲ့ Stack တပေါ်တင်မယ်။ [

a ွေင်ြီးစ ွေင်ြီးပတ် မဟတ်တတာဲ့ တ ာ်ပါ ဲ့မယ်။ (Skip)

* Skip

( ွေင်ြီးစဆတတာဲ့ Stack တပေါ်တင်မယ်။ [, (

252 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

2 Skip

+ Skip

b Skip

) ွေင်ြီးပတ်ဆတတာဲ့ stack တပေါ် pop ပ် ်တယ်။ ( ရတယ်။ stack [

တပေါ် တစ်ခ တ ာဲ့သာွေ ြီးမယ်။ ရ ာတဲ့ ( - ်သည်ြီး ွေင်ြီးစနဲ့ ဝင် ာတဲ့ )

- ်သည်ြီး ွေင်ြီး အပတ်နဲ့ တ ်စစ်တတာဲ့ ်သည်ြီး ွေင်ြီးခ င်ြီး တူတတာဲ့

မန်တသြီးတတာဲ့ ဆ ်တ ်မယ်။

} ွေင်ြီးပတ်ဆတတာဲ့ stack တပေါ် pop ပ် ်တယ်။ [ ရတယ်။ stack

တပေါ် တစ်ခ တ ာဲ့သာွေ ြီးမယ်။ ရ ာတဲ့ [ - တထာငဲ့် ွေင်ြီးစနဲ့ ဝင် ာတဲ့ } -

တွေန်ဲ့ ွေင်ြီး အပတ်နဲ့ တ ်စစ်တတာဲ့ ်သည်ြီး ွေင်ြီးနဲ့ တွေန်ဲ့ ွေင်ြီး

မတူတတာဲ့ ဲ့ “Unmatch” ဆပပြီး မတူတက ာင်ြီးထတ်ဖပမယ်။ မာြီးသွောြီး ဲ့

ဆ ်တ ်စရာမ တတာဲ့ဘူြီး။

{e + [a * (2 + b)] / 2

ဝငလ ော့ အလုပလုပပု Stack

character

{ ွေင်ြီးစဆတတာဲ့ Stack တပေါ်တင်။ {

e Skip {

+ Skip {

[ ွေင်ြီးစဆတတာဲ့ Stack တပေါ်တင်။ {, [

253 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

a Skip {, [

* Skip {, [

( ွေင်ြီးစဆတတာဲ့ Stack တပေါ်တင်။ {, [, (

2 Skip {, [, (

+ Skip {, [, (

b Skip {, [, (

) ွေင်ြီးပတ်ဆတတာဲ့ Stack တပေါ် တစ်ခ pop ပ်မယ်။ (- ်သည်ြီး {, [

ွေင်ြီးစရတယ်။ ဝင် ာ တာဟာ )- ်သည်ြီး ွေင်ြီးအပတ် ဖြစ်တဲ့

အတွေ ် တူတယ်။ ဆ ်တ ်မယ်။

] ွေင်ြီးပတ်ဆတတာဲ့ Stack တပေါ် တစ်ခ pop ပ်မယ်။ [- တထာငဲ့် ွေင်ြီးစ {

ရတယ်။ ဝင် ာ တာ ]-တထာငဲ့် ွေင်ြီးအပတ်ဆတတာဲ့ တူတယ်။

ဆ ်ပပြီး တ ်မယ်။

/ Skip {

2 Skip {

Equation ထ character တစ်ခခ င်ြီး ဖြတ်ဝင် ာတာတတွေ {

န်သွောြီးပပဆတတာဲ့ Stack စစ်တယ်။ Stack empty မဖြစ်တသြီးပ

တစ်ခ န်တနတာဖြစ် ဲ့ ွေင်ြီးစပတာ ဖြစ်တဲ့ အတွေ ် “Extra open

bracket” ဆပပြီး အတဖြထွေ ်မယ်။

တလော့ကျငော့ ကညော့ပါ။

1. [a + {(b – 3)-(4 – e)} / 2 ] တ ဲ့ ငဲ့်က ညဲ့်ပါ။

254 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

2. [a + {(b – 3)-(4 – e)} / 2 တ ဲ့ ငဲ့်က ညဲ့်ပါ။

3. [a + {(b – 3)-(4 – e)} / 2 ] ) တ ဲ့ ငဲ့်က ညဲ့်ပါ။

Bracket Checker Algorithm ကု တရ်း ဖပရရငတ ော့

bracketChecker (equation, stack)

1. Set index = 0
2. Set length= LENGTH(equation)
3. Repeat while index < length:
4. Ch = equation [index]
5. If Ch == ‘(‘ or Ch == ‘[‘ or Ch == ‘{‘ then:
6. stack.push(Ch)
7. Else if Ch == ‘)‘ or Ch == ‘]‘ or Ch == ‘}‘ then:
8. If stack.isEmpty() then:

9. Return “Extra Close Bracket”, Ch

10. popCh = stack.pop()

11. if (popCh == ‘(‘ and Ch != ‘)‘ ) or (popCh==’[‘ and Ch != ‘]‘ )

12. or popCh==’{‘ and Ch != ‘}‘ then:


13. Return “UNMATCH”
14. index = index + 1

15. End of Loop

16. If !stack.isEmpty() then:

17. Return “Extra Open Bracket”, stack.pop()

255 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Queue

Queue ဆတာ တတာဲ့ ျွန်မတဲ့ အာြီး ြီး ရင်ြီးနြီးပပြီးသာြီးဖြစ်ပါတယ်။ Counter မာ တငွေရင်ြီးြဲ့

တန်ြီးစတယ်၊ ရပ်ရင် ်မတ် တန်ြီးစတယ်။ တြီးဂတ်မာ ာြီးတတွေတန်ြီးစတယ်။ ဒါတတွေအာြီး ြီးဟာ

Queue ရဲ့ ဥပမာတတွေ ဖြစ်ပါတယ်။ ဝငပပီ်း န်းစီရင တနောကကတန ဝငပပီ်း န်းစီရ ယ။ ပပီ်းသွ ်းလု

ထွကတ ော့ တရှေ့ကလူက အရငထွကသွ ်း ယ။ ဒီတ ော့ ဝငရင တနောကကတနဝင၊ ထွကရင တရှေ့က

ထွက ဖြစလု တနောကကု တထ ကြု Rear နငော့ တရှေ့ကု တထ ကြု Front ဆုပပီ်း တထ ကြု

နစခုလုပါ ယ။ ဒါတက ာငဲ့် ဝင်ရင် Rear ဝင်၊ ထွေ ်ရင် Front တန ထွေ ်ရမာဖြစ်ပါတယ်။

Counter မ တငွရင်းရင ဘယသူအရငရင်းပပီ်း ထွကသွ ်းခွငော့ရသလဆုရင အရငတရ က ော့

သူက အရငရင်းပပီ်း ထွကသွ ်းရ ဖြစပါ ယ။ အရင တရ ကသူ အရငထွကရ ဖြစလု Queue ကု

First In First Out (FIFO) လု တခေါ်ပါ ယ။

Queue Size : N, Number of Elements in Queue : E

▪ E ဆတာ array ခန်ြီးထ ထညဲ့်ထာြီးတဲ့ element အတရအတွေ ် တဖပာတာဖြစ် ဲ့ E တန်ြြီး 0

ဆတာ empty ဖြစ်တနတာ ဖြစ်ပါတယ်။

▪ ထညဲ့်ရင် Number of Element (E) 1 တြီးမယ်၊ ြ ်ရင် E 1လ ျှော့မယ်။

▪ E နဲ့ N ညရင် full ဖြစ်သွောြီးတဲ့ သတဘာဖြစ်ပါတယ်။ ထပ်ထညဲ့် ဲ့ မရတတာဲ့ပါဘူြီး။

Operation Front, Rear QUEUE ရင်းလင်းချက

and E

Front : 0 ---, ---, ---, ---, --- Queue Size(N) : 5

Rear : 0 Number of Elements(E) : 0

E:0

256 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Insert A Front : 0 A, ---, ---, ---, --- ထညဲ့်တတာဲ့ Rear ဘ ် ထညဲ့်၊ Rear

Rear : 1 0 ဆတတာဲ့ 0 ခန်ြီးထညဲ့်၊ ပပြီးတာနဲ့ Rear ၁

E:1 တြီး၊ တစ်ခန်ြီးထညဲ့် ်တာဖြစ် ဲ့ E 1

တြီး။

Insert B Front : 0 A, B, ---, ---, ---

Rear : 2

E: 2

Insert C Front : 0 A, B, C, ---, ---

Rear : 3

E:3

Delete Front : 1 ---, B, C, ---, ---- ထတ်မာဖြစ် ဲ့ Front ဘ ် တန ထတ်၊

Rear : 3 Front 0 ဖြစ်တန ဲ့ 0 ခန်ြီး A ထတ်။

E :2 ထတ်ပပြီးတာနဲ့ Front ၁တြီး၊ E ၁ လ ျှော့။

Return : A

Delete Front : 2 ---, ---, C, ---, --- ထတ်မာဖြစ် ဲ့ Front ဘ ် တန ထတ်၊

Rear : 3 Front 1 ဖြစ်တန ဲ့ 1 ခန်ြီး B ထတ်။

E:1 ထတ်ပပြီးတာနဲ့ Front ၁တြီး၊ E ၁ လ ျှော့။

Return : B

Insert D Front : 2 ---, ---, C, D, --- ထညဲ့်တတာဲ့ Rear ထညဲ့်၊ Rear 3

Rear : 4 ဆတတာဲ့ 3 အခန်ြီးထထညဲ့။် ပပြီးရင် Rear ၁

E:2 တြီး၊ E ၁တြီး။

257 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Insert E Front :2 ---, ---, C, D, E ထညဲ့်တတာဲ့ Rear ထညဲ့၊် Rear 4

Rear : 0 ဆတတာဲ့ 4 အခန်ြီးထထညဲ့။် ပပြီးရင် Rear ၁

E:3 တြီး၊ E ၁တြီး မယ်။ Rear ၁ တြီးမယ်

ဆတဲ့အခ န်မာ Rear ဟာ UB(array size

(N) -1) နဲ့ ညတနတယ်။ ဒတတာဲ့ ထညဲ့်ရင်

အစ ဖပန်စရမာမဲ့ Rear ၁

မတြီးတတာဲ့ပ Rear ထ 0 ဖပန်ထညဲ့်။ E

တတာဲ့ 1 တြီး။

Insert F Front : 2 F, ---, C, D, E ထညဲ့်တတာဲ့ Rear ထညဲ့်၊ Rear 0

Rear : 1 ဆတတာဲ့ 0 အခန်ြီးထထညဲ့။် ပပြီးရင် Rear ၁

E: 4 တြီး၊ E ၁တြီး။

Insert G Front : 2 F, G, C, D, E ထညဲ့်တတာဲ့ Rear ထညဲ့်၊ Rear 1

Rear : 2 ဆတတာဲ့ 1 အခန်ြီးထထညဲ့။် ပပြီးရင် Rear ၁

E:5 တြီး၊ E ၁တြီး။

Insert H Number of Element(E) ဟာ array size

(N) နဲ့ ညသွောြီးပပဆတတာဲ့ ထပ်ထညဲ့် ဲ့

မရတတာဲ့ပါဘူြီး (Overflow) ဖြစ်ပါမယ်။

Empty မဖြစ Front : 3 F,G,---, D, E Front 2 ဆတတာဲ့ 2 အခန်ြီး C ထတ်။

မချင်း ထု Rear : 2 Front ၁ တြီး၊ E ၁ လ ျှော့။

E:4 Return : C

258 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Front : 4 F, G, ---, ---, E Front 3 ဆတတာဲ့ 3 အခန်ြီး D ထတ်။

Rear : 2 Front ၁ တြီး၊ E ၁ လ ျှော့။

E:3 Return : D

Front : 0 F, G, ---, ---, --- Front 4 ဆတတာဲ့ 4 အခန်ြီး E ထတ်။

Rear : 2 Front ၁ တြီး၊ E တစ်လ ျှော့ ရမယ်။ သတ


ဲ့ သာ်

E:2 Front ဟာ LB(N-1) နညသွောြီး ဲ့ ၁

တြီးမညဲ့်အစာြီး 0 ဖပန်စရမယ်။

Return : E

Front : 1 ---, G, ---, ---, --- Front 0 ဆတတာဲ့ 0 အခန်ြီး F ထတ်။

Rear : 2 Front ၁ တြီး၊ E ၁ လ ျှော့။

E:1 Return : F

Front : 2 ---, ---, ---, ---, --- Front 2 ဆတတာဲ့ 2 အခန်ြီး G ထတ်။

Rear : 2 Front ၁ တြီး၊ E ၁ လ ျှော့။

E:0 Return : G

Number of Elements (E) 0 နဲ့ ညသွောြီးပပဖြစ် ဲ့ ထပ်ထတ်စရာ မရတတာဲ့ပါဘူြီး။ ထပ် ထတ်ရင်

မရတာ ထတ်တဲ့ “UNDERFLOW” ဖြစ်မာ ဖြစ်ပါတယ်။

A, B, C, D, E, F, G ဆပပြီး ထညဲ့်ခဲ့တာ Delete မာ Return ဖပန်ထာြီးတာတ ြီးတတွေ အစဉ် ်

က ညဲ့်က ညဲ့်ပါ။ A, B, C, D, E, F, G ဆပပြီး အစဉ် ်ဖပန်ရပါတယ်။ အရင်ထညဲ့်ခဲ့တဲ့ A အရင်

ဖပန်ရတဲ့ သတဘာပါ။ ဒတယ ထညဲ့်တဲ့ B ဒတယဖပန်ရပါတယ်။ FIFO ပစနဲ့ ဖပန်ရတာ ဖြစ်ပါတယ်။

259 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Algorithm တတွေ တရြီးက ညဲ့်မယ်ဆရင်

Front = 0, Rear = 0 ,

E is Number of Elements in Queue, N is length of Queue

isEmpty( )
Return E == 0
isFull()
return E==N

Insert (Item)

If isFull() then:

Return false

Queue[ Rear ] = Item

If Rear == N – 1 then:

Rear = 0

Else:

Rear = Rear + 1

E=E+1

Delete ()

If isEmpty() then:

Write “Underflow”

Return NULL

Value = Queue[ Front ]

If Front == N – 1 then:

Front = 0

260 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Else:
Front = Front + 1
E=E–1
Return Value

အနည်ြီးငယ် ထပ်ရင်ြီးခ င်တာ insert Algorithm မာ

If isFull() then:
Return false

ဆတဲ့ တနရာပါ။အခန်ြီးဖပညဲ့်သ ာြီး စစ်တယ်။ ဖပညဲ့်ရင် return false ဆတဲ့ အတွေ ်

ယခ ပ်တနတဲ့ function ထ တန function call တခေါ်တဲ့ဆ ထွေ ်သွောြီးမာ ဖြစ်ပါတယ်။ ဒါတက ာငဲ့်

If မာ စစ်ထာြီးတဲ့ isFull မန်ခဲ့ရင် Queue[ Rear ] = Item တနစပပြီး သူူ့ရဲ့တအာ ် စာတက ာင်ြီးတတွေ

တရာ ် ာစရာ အတက ာင်ြီးမရပါဘူြီး။ တရာ ် ာတယ်ဆရင် If တနာ ် condtion ဖြစ်တဲ့ isFull

မာြီး ဲ့ တရာ ် ာတာဖြစ်ပါတယ်။ ဒါတက ာငဲ့် Queue[Rear] = Item အတပေါ်မာ Else:

တြ ာ ်ထာြီးခဲ့တာ ဖြစ်ပါတယ်။ Else ထညဲ့်တရြီး ည်ြီး အတူတူပဖြစ်ပါတယ်။ ဖမင်သာတအာင်

ဖပန်တရြီးဖပရရင်

Insert (Item)

If isFull() then:

Return false

Else:

Queue[ Rear ] = Item

If Rear == N – 1 then:

Rear = 0

Else:

Rear = Rear + 1

E=E+1

261 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

ဒပစ ဖြစ်ပါတယ်။ အခ အသစ်တရြီးဖပတာနဲ့ အတပေါ် တရြီးဖပခတ


ဲ့ ဲ့ insert ဟာ အတူတူပဖြစ်ပါတယ်။

Else တ ြီးတြ ာ ်တာနဲ့ မတြ ာ ်တာပ ွောပါတယ်။ Delete မာ ည်ြီး ထနည်ြီးတူ ဖပန်တရြီး ဲ့

ရပါတယ်။

တလော့ကျငော့ ကညော့ ကပါ။

အပ ေါ်မှာ တွက်ပ တဲ့ ရိုးရိုးနည်ိုးန တစ်


ဲ့ ပ ေါက်၊ algorithm က trace လက်တှာ တစ်ပ ေါက်န တစ်
ဲ့ ဒ်က

2 ေါတွက်ပ ိုး ေါ။

1. Queue : ---, ----, 30, 40, ----, -----

1. Insert 50

2. Insert 60

3. Insert 70

4. Insert 80

5. Empty ဖြစ်သညဲ့်တင်တအာင် delete ပ်ပါ။

6. Delete ပ် ် ဲ့ Return ဖပန်တာတတွေ တန်ြီးစတရြီးဖပပါ။

2. Queue is Empty. N = 10

1. Insert 10, 20, 30, 40, 50, 60, 70

2. Delete five values

3. Queue ဖပညဲ့်သည်အထ odd numbers မ ာြီး 1 စပပြီး Insert ပ်ပါ။

4. Empty မဖြစ်မခ င်ြီးဖပန်ထတ်ပါ။

5. Delete ပ် ် ဲ့ Return ဖပန်တာတတွေ တန်ြီးစတရြီးဖပပါ။

262 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Hashing

အခန်ြီးတပါင်ြီး 10000 ရတဲ့ array ထ တွေ ် ရ


ဲ့ ာတဲ့ value တတွေ ထညဲ့်တယ်ဆပါတတာဲ့။

ပထမဆြီး တွေ ် ရ
ဲ့ ာတဲ့ တန်ြြီး 0 ခန်ြီး၊ ဒတယ တွေ ် ရ
ဲ့ ာတဲ့ တန်ြြီး 1 အခန်ြီး စသည်ဖြငဲ့်

array ထ သမ်ြီးသွောြီးတယ်။ တွေ ် ဲ့ရ ာတဲ့ တန်ြြီးဆတာ က ြီးစဉ်ငယ် ်တတွေ၊ ငယ်စဉ်

က ြီး ်တတွေ မဟတ်ဘူြီး။ သူထွေ ်ခ င်တာ ထွေ ်တယ်။ ဒတတာဲ့ အဒ array ထ တစ်ခခ

ရာခ င်တယ် ဆရင် တန်ြြီးတတွေဟာ sorting စထာြီးတာမဟတ် ဲ့ Binary search သြီး ဲ့မရဘူြီး၊

Linear search ပ သြီးပပြီး 0 ခန်ြီး၊ 1 အခန်ြီးစသည်ဖြငဲ့် အခန်ြီးနပါတ် ၁ တြီးတြီးပပြီး အခန်ြီးအစဉ် ်

ရာသွောြီးမယ်။ တ ယ် ဲ့ ယ်ရာခ င်တဲ့ တန်ြြီး တနာ ်ဆြီးအခန်ြီးနပါတ် 9999 မာ ရတယ်ဆရင်

အက မ် 10000 တ ်စစ် ်ရတာ ဖြစ် ဲ့ အခ န် အတတာ်တ ြီးယူသွောြီးမာ ဖြစ်ပါတယ်။

အဒ အခန်ြီးနပါတ် အစဉ် ်ရာ ဲ့ က ာတဖဲ့ ပဿနာ တဖြရင်ြီးြဲ့ Hashing ဆတာ

အသြီးဖပြို ာက ပါတယ်။ Hashing ဟာ ပမန်သမ်ြီးနည်ြီးအတင်ြီး အခန်ြီးအစဉ် ် ထညဲ့်သွောြီးတာမ ြိုြီး

မ ပ်တတာဲ့ဘ ထညဲ့ခ
် င်တတ
ဲ့ န်ြြီးတပေါ်မူတည်ပပြီး အခန်ြီးနပါတ် တွေ ်ပါမယ်။ တွေ ် ရ
ဲ့ ာတဲ့

အခန်ြီးထ ထညဲ့်ခ င်တဲ့ တန်ြြီး သွောြီးသမ်ြီးမာ ဖြစ်ပါတယ်။ ဒတတာဲ့ ရာတဲ့ အခါမာ ည်ြီး Linear

search မ ြိုြီး အခန်ြီးတပါ ်တစဲ့ အခန်ြီးနပါတ်အစဉ် ် ရာစရာမ တတာဲ့ဘ ရာခ င်တဲ့ တန်ြြီးတပေါ်

အခန်ြီးနပါတ် တွေ ်ပပြီး ရ ာတဲ့ အခန်ြီးထ သွောြီးရာရမာဖြစ်ပါတယ်။

ကယလု ဝငလ က စ သ ်းဆုရင Number အရငတဖပ င်းရပါမယ။

Cat ဆရင်

C= 3 (A-Z မာ နပါတ်သြီးတနရာမာရ ဲ့ ဖြစ်ပါတယ်။)

a =1 (A-Z မာ ပထမတနရာမာရ ဲ့ ဖြစ်ပါတယ်။)

263 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

t = 20

Cat = 3 + 1 + 20 = 24

တ ယ် ဲ့ blank ပါခဲ့ရင် blank တန်ြြီး 0 ဖြစ်ပါတယ်။ ဒါ တတာဲ့ စာသာြီး

ဂဏန်ြီးတဖပာင်ြီးတဲ့ အ ွေယ်ဆြီးနည်ြီးဖြစ်ပါတယ်။ တစ်ဖခာြီးတွေ ်နည်ြီးတတွေ ရပါတသြီးတယ်။

Array Index Calculation in Hashing

arrayIndex = value % arraySize(N) ဆပပြီး တွေ ်တပြီးရပါတယ်။

N = 60

Insert 360

arrayIndex = 360 % 60 = 0, ဒါတက ာငဲ့် 360 array ရဲ့ 0 ခန်ြီးမာ သွောြီးပပြီး ထညဲ့်မာဖြစ်ပါတယ်။

Insert 70

arrayIndex = 70 % 60 = 10, ဒါတက ာငဲ့် 70 array ရဲ့ 10 ခန်ြီးမာ သွောြီးပပြီး ထညဲ့်မာဖြစ်ပါတယ်။

Search 365

arrayIndex = 365 % 60 = 5 ဆတတာဲ့ 5 အခန်ြီး တန်ြီးသွောြီးပပြီး 365 ရမရ စစ်မာဖြစ်ပါတယ်။

Collisions

သတ
ဲ့ သာ် ည်ြီး Hashing နည်ြီး collisions ဖပဿနာရတနပါတယ်။ Collision

နမူနာဖပရရင်

264 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

365 => arrayIndex = 365 % 60 = 5, ဒတတာဲ့ 365 5 အခန်ြီးမာ သွောြီးထညဲ့်မာဖြစ်ပါတယ်။

125 => arrayIndex = 125 % 60 = 5 ထွေ ် ာတယ်။ သတ


ဲ့ သာ် 5 အခန်ြီး 365 ထညဲ့်ပပြီးသာြီး

ဖြစ် ဲ့ အခန်ြီးမအာြီးတတာဲ့ပါဘူြီး။ အဒါ Collision ပါပ။

အဒီ ဖပဿနောကု တဖြရင်းြု အ ွက

1. Linear probing - ထညဲ့်ရမညဲ့်ခန်ြီး မအာြီးတာဖြစ်ဖြစ်၊ ရာတအ


ဲ့ ခန်ြီးမာ

မတတွေဲ့တာဖြစ်ဖြစ် အတဖခတနမ ြိုြီးမာ တွေ ် ရ


ဲ့ ာတဲ့ array index 11 တပါင်ြီးတယ်၊

ဒါမ အဆင်မတဖပတသြီးဘူြီးဆရင် 21 တပါင်ြီးတယ်၊ ဒါမ အဆင်မတဖပတသြီးဘူြီးဆရင် 31

တပါင်ြီးတယ်၊ စသည်ဖြငဲ့် အဆင်မတဖပတသြီးသတရဲ့ 4,5,6 …. ၁ထပ် တတွေနဲ့ ဆ ်တွေ ်

သွောြီးမာဖြစ်ပါတယ်။

365 => arrayIndex = 365 % 60 = 5, ဒတတာဲ့ 365 5 အခန်ြီးမာ

သွောြီးထညဲ့်မာဖြစ်ပါတယ်။

125 => arrayIndex = 125 % 60 = 5 ထွေ ် ာတယ်။ သတ


ဲ့ သာ် 5 အခန်ြီး

365 ထညဲ့်ပပြီးသာြီး ဖြစ် ဲ့ အခန်ြီးမအာြီးတတာဲ့ပါဘူြီး။ ဒါဆ 11 တပါင်ြီးမယ် 5+1 = 6

အခန်ြီးထထညဲ့်မယ်။ တ ယ် ဲ့ 6 အခန်ြီးမအာြီးတသြီးရင် 21 တပါင်ြီးမယ်၊ 5+ 2 = 7

အခန်ြီးထထညဲ့်မယ်။ 7 ခန်ြီးမအာြီးတသြီးရင် 31 တပါင်ြီးတွေ ်မယ်၊ စသည်ဖြငဲ့် တွေ ်

သွောြီးမာ ဖြစ်ပါတယ်။

2. Quadratic probing - ထညဲ့်ရမညဲ့်ခန်ြီး မအာြီးတာဖြစ်ဖြစ်၊ ရာတအ


ဲ့ ခန်ြီးမာ

မတတွေဲ့တာဖြစ်ဖြစ် အတဖခတနမ ြိုြီးမာ တွေ ် ရ


ဲ့ ာတဲ့ array index Quadratic

ဆတဲ့အတင်ြီး ၂ ထပ်တတွေ တပါင်ြီးတွေ ်မာဖြစ်ပါတယ်။ 12 တပါင်ြီးတယ်၊ ဒါမ

အဆင်မတဖပတသြီးဘူြီးဆရင် 22 တပါင်ြီးတယ်၊ ဒါမ အဆင်မတဖပတသြီးဘူြီးဆရင် 32

265 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

တပါင်ြီးတယ်၊ စသည်ဖြငဲ့် အဆင်မတဖပတသြီးသတရဲ့ 4,5,6 …. ၂ထပ်တတွေနဲ့

ဆ ်တွေ ်သွောြီး မာဖြစ်ပါတယ်။ Linear Probing မာ ထညဲ့်တာ

နမူနာဖပပပြီးပပဖြစ်တာတက ာငဲ့် Quadratic probing မာ ရာတာ နမူနာဖပပါ ဲ့မယ်။

N = 30

… Searching 307
7 67
arrayIndex = 307 % 30 = 7
8 128
9 39 7 အခန်ြီးမာ မတတွေဲ့တတာဲ့ 12 တပါင်ြီးမယ်။
10
7 + 12 = 8 မာ ည်ြီး မတတွေဲ့ဘူြီး။
11 41
12 22 တပါင်ြီးမယ်။

13
7 + 22 = 11မာ ည်ြီး မတတွေဲ့ဘူြီး။
14
15 32 တပါင်ြီးမယ်။

16 307 7+ 32 = 16 မာ တတွေဲ့ပါတယ်။

3. Double Hashing

arrayIndex = value % N

StepSize = constant – (value % constant)

arrayIndex = (arrayIndex + StepSize ) % N

N = 10

Insert 12

newArrayIndex = value % N = 12 % 10 = 2, 2 အခန်ြီးမာ 12 ထညဲ့်မယ်။

266 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Insert 2

arrayIndex = value % N = 2 % 10 = 2, 2 အခန်ြီး မ ွေတတ


် တာဲ့ ဲ့ StepSize

တွေ ်မယ်။ StepSize တွေ ်ြဲ့ constant က ြို ်တာထာြီး ဲ့ရပါတယ်၊ 5

ထာြီး ်ပါ ဲ့မယ်။

StepSize = 5 – (2 % 5 ) = 5 – 2 = 3

arrayIndex = ( 2 + 3 ) % 10 = 5, 2 5 အခန်ြီးထ ထညဲ့်မာဖြစ်ပါတယ်။

Insert 102

arrayIndex = value % N = 102 % 10 = 2, 2 အခန်ြီး မ ွေတတ


် တာဲ့ ဲ့ StepSize

တွေ ်မယ်။ StepSize တွေ ်ြဲ့ constant 5 ထာြီးပပြီး ဖြစ်ပါတယ်။

StepSize = 5 – (102 % 5 ) = 5 – 2 = 3

arrayIndex = ( 2 + 3 ) % 10 = 5, 5 အခန်ြီး ခန 2 ထညဲ့်ထာြီးတတာဲ့

မအာြီးတတာဲ့ဘူြီး၊ ဒတတာဲ့ ထပ်တွေ ်မယ်။

arrayIndex = ( 5 + 3 ) % 10 = 8, 8 အခန်ြီးထ 102 ထညဲ့်မာဖြစ်ပါတယ်။

Hashing အတက ာင်ြီးတဖပာရမယ်ဆရင် ဒထ ်မ အမ ာြီးက ြီး တဖပာစရာ န်ပါတသြီးတယ်။

သတ
ဲ့ သာ် Hashing ဆတာ ရာတအ
ဲ့ ခ န်(ဆွေထတ်တဲ့ အခ န်) အခ န် န် သ ်သာတအာင်

သမ်ြီး တည်ြီး အခန်ြီးနပါတ် တွေ ်ပပြီး သမ်ြီးပါတယ်။ ရာတတာဲ့ အခန်ြီးနပါတ်တွေ ်ပပြီးရာပါတယ်။

အခန်ြီးအတရတွေ ် မ ာြီးတာအတွေ ်ဆရင် hashing သြီးသငဲ့်ပါတယ်။ Hash ဆတာ သရတအာင်

တွေ ်နည်ြီး အတဖခခတ ြီးပ တဖပာသွောြီးတာဖြစ်ပါတယ်။ တစ်ဖခာြီးတွေ ်နည်ြီးတတွေ ည်ြီး ရပါတသြီးတယ်။

267 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

တလော့ကျငော့ ကညော့ ကပါ။


1. N = 15 ဖြစ်တသာ Array ထ 2, 32, 92, 17, 18, 33, 48, 153, 150 တဲ့ linear

probing သြီးပပြီး ထညဲ့်ပါ။

2. ထညဲ့်ပပြီးသာြီး array ထမ 153 linear probingဖြငဲ့် ဖပန်ရာပါ။ ဘယ်နစ်ခါ

တ ်စစ် ်ရသ တဖြပါ။

3. N = 30 ဖြစ်တသာ Array ထ 13, 2, 32, 92, 17, 18, 33, 63, 153, 150 တဲ့ Quadratic

probing သြီးပပြီး ထညဲ့်ပါ။

4. ထညဲ့်ပပြီးသာြီး array ထမ 153 Quadratic probing ဖြငဲ့် ဖပန်ရာပါ။ ဘယ်နစ်ခါ

တ ်စစ် ်ရသ တဖြပါ။

5. N = 23၊ constant 5၊ 1, 38, 37, 16, 20, 3, 11, 24, 5, 16, 10, 31, 18, 12, 30, 1, 19, 36, 41,

15, 25 တဲ့ double hashing ဖြငဲ့် ထညဲ့်ပါ။

6. ထညဲ့်ပပြီးသာြီး array ထမ 25 double hashing ဖြငဲ့် ဖပန်ရာပါ။ ဘယ်နစ်ခါ

တ ်စစ် ်ရသ တဖြပါ။

7. ဒမာ stack တဲ့ Queue တဲ့ အဖပင် sorted array ဆတာ ရပါတသြီးတယ်။ ဥပမာ N=10 ဆ 10

ခန်ြီးမဖပညဲ့်မခ င်ြီး ထညဲ့် ဲ့ရမယ်။ ပထမ 20 ဝင် ာတယ်ဆပါစဲ့။ ပထမဆြီးဆတတာဲ့ 0

အခန်ြီးမာ ထညဲ့်မယ်။ တနာ ် 10 ဝင် ာတယ်ဆရင် 10 ငယ်တတာဲ့ 0 အခန်ြီးထ ဝင်မယ်၊

ဒတတာဲ့ 0 ခန်ြီး 20 တနာ ်အခန်ြီး တရဲ့ရမယ်။ 15 ဝင် ာတယ်ဆရင် 10

ထ ်က ြီးတယ်၊ 20 ထ ်ငယ်တယ်ဆတတာဲ့ 20 တနရာမာ ထညဲ့်ပပြီး 20 တနာ ်တစ်ခန်ြီး

တရဲ့ရမာဖြစ်ပါတယ်။ Sorted array တ ြီးအတွေ ် အပ်တဲ့ algorthms တရြီးက ညဲ့်ပပြီး

တ ဲ့ ငဲ့်တစခ င်ပါတယ်။

268 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Chapter အနှစခ
် ျုပ်

▪ ဒအခန်ြီး တတာဲ့ Array အပ်ခ ်တပေါ်မူတည်ပပြီး ပစမ ြိုြီးစနဲ့ အသြီးဖပြို ဲ့

ရတယ်ဆတာ တဖပာခ င်တာဖြစ်ပါတယ်။

▪ LIFO - တနာ ်ဆြီးဝင်တဲ့တ ာင် အရင်ဆြီးထွေ ်ခ င်ရင် Stack သြီးပါတယ်။ တနာ ်ဆြီးဝင်၊

အရင်ထွေ ်ဆပပြီး တစ်ဘ ်ထမာ အ ပ် ပ်တာဖြစ် ဲ့ တထာ ်ြရ


ဲ့ ာ တစ်ခပ ပါတယ်။

top ဲ့ တခေါ်ပါတယ်။

▪ FIFO - ်မတ်တန်ြီးစသ မ ြိုြီး အရင်ဝင်တဲ့တ ာင် အရင်ထွေ ် ပ်ခ င်ရင်တတာဲ့ Queue

သြီးပါတယ်။ ဝင်မယ်ဆရင် တနာ ် တနဝင်၊ အရင်ရ ထ


ဲ့ ွေ ်မာ တရဲ့ ဖြစ်ပါတယ်။

ဒါတက ာငဲ့် တထာ ်ြန


ဲ့ စ်ခ ပါတယ်။ ဝင်မညဲ့် တနာ ် တထာ ်မာ Rear ဖြစ်ပပြီး၊

ထွေ ်မညဲ့် တရဲ့ တထာ ်တာ Front ဖြစ်ပါတယ်။

▪ Hashing တတာဲ့ Array ထ value ထညဲ့်တဲ့ တနရာမာပဖြစ်ဖြစ်၊ array ထ value ရာတဲ့

အခါမာပ ဖြစ်ဖြစ် value တပေါ်မာ အခန်ြီးနပါတ်တွေ ်ခ ်ပပြီး အ ပ် ပ်တာဖြစ်ပါတယ်။

အခန်ြီးအတရတွေ ်မ ာြီးတာတတွေအတွေ ်ဆရင် Hashing ရာရတြွေရတာအတွေ ် အခ န် န်

သ ်သာတစတသာ် ည်ြီး အခန်ြီးအတရတွေ ်နည်ြီးရင်တတာဲ့ array index တွေ ်ရတာ

အခ န် န်တယ် ဆပပြီး တဖပာ ဲ့ရပါတယ်။

269 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

“ပထမနစ်တန်ြီး code တတွေဆတာ

တ ာ ်သင်ပန်ြီးတပေါ်သင်ရတာ၊

နာြီး ည်ရခ ်တတာဲ့ နာြီး ည်တာ ၊မ ည်တာ နဲ့။

ဒါနဲ့ သခ္ ာတွေ ်သ ခဏ ခဏ ဖပန်တွေ ်၊ ဖပန်ဖပန် trace ်တာ

က ာတတာဲ့ အ ွေတ်တတွေ ရ ဲ့။

ဒတယနစ်တရာ ်တတာဲ့ ယဲ့်ဟာ ယ် တရြီးတတ် ာပပ၊

အဒ
ဲ့ ါ ပထမနစ် အဖပန်ဖပန် အ န် န် ပ်ခတ
ဲ့ ဲ့ အ ြိုြီးတတွေပါ။”

270 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

အခန်း (၁၅)

Linked List

Linked list မှာ

1. Simple Linked List

2. Doubly Linked List

3. Circular Linked List ဆိုပ ြီး 3 မ ြီး ရ ါတယ်။

Simple Linked List ကို နမူနာပ ါ ါ့မယ်။

Value Link
HEAD 0
1 1 I 3
2
3 --- (space) 4
4 C 6
5
6 A 7
7 N 10
8
9
10 ---(space) 12
11
12 F 13
13 L 14
14 Y NULL

271 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Simple Linked List (Singly Linked List လိုို့လည်ြီး ခ ေါ် ါတယ်) ဆိုခတှာါ့ variable name ကို SLL

ဲ ထှာြီးလိုက်ကကရခ ှာင်။

HEAD ဟှာ 1 ပြစ်ခနလိုို့

SLL[1] → Value = I ရမယ်။ ပ ြီးခတှာါ့ SLL[1] → Link = 3 ကို ဆက်သှာြီးမယ်။

SLL[3] → Value = space ရမယ်။ ပ ြီးခတှာါ့ SLL[3] → Link = 4 ကို ဆက်သှာြီးမယ်။

SLL[4] → Value = C ရမယ်။ ပ ြီးခတှာါ့ SLL[4] → Link = 6 ကို ဆက်သှာြီးမယ်။

SLL[6] → Value = A ရမယ်။ ပ ြီးခတှာါ့ SLL[6] → Link = 7 ကို ဆက်သှာြီးမယ်။

SLL[7] → Value = N ရမယ်။ ပ ြီးခတှာါ့ SLL[7] → Link = 10 ကို ဆက်သှာြီးမယ်။

SLL[10] → Value = space ရမယ်။ ပ ြီးခတှာါ့ SLL[10] → Link = 12 ကို ဆက်သှာြီးမယ်။

SLL[12] → Value = F ရမယ်။ ပ ြီးခတှာါ့ SLL[12] → Link = 13 ကို ဆက်သှာြီးမယ်။

SLL[13] → Value = L ရမယ်။ ပ ြီးခတှာါ့ SLL[13] → Link = 14 ကို ဆက်သှာြီးမယ်။

SLL[14] → Value = Y ရမယ်။ ပ ြီးခတှာါ့ SLL[14] → Link = NULL ဆိုခတှာါ့ ဆက်သှာြီးစရှာ

မလိုခတှာါ့ဘူြီး။ HEAD ကခန စပ ြီးသှာြီးလိုက်တှာ “I CAN FLY” ဆတ


ို ဲါ့ ခပြကို

ရမှာပြစ် ါတယ်။

272 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

လ ေ့ကျငေ့ကကညေ့ကကရလအောင။
ဒမှာ Poem ဆိုတဲါ့ pointer ကခန “Life is a challenge, meet it.” ဆိုတှာကို

ခထှာက် င် ါတယ်။ Agreement pointer ကခန “Try Our Best!” ဆိုတှာကို ခထှာက် င် ါတယ်။

လို ်တဲါ့ ခနရှာခတကို ပြညါ့်ခ ြီး ါ။

Value Link
Poem 0 Life
1 is
2 Try
3 a
Agreement
4
5 Our
6 challenge
7
8
9 ,
10 meet
11 Best!
12 It.
13
14

Simple Linked List

Value Next

ဒလို နစ် ို တလ
ဲ ိုက်ခလြီးနဲို့ ပ ခလါ့ရ ါတယ်။ အဲဒီအတလ
ဲ ်းကို Node ိုို့လခေါ်ပါတယ။ Node ထဲမော

တနဖို်းသမ်းဖိုို့ value ရယ၊ လနောက Node ကို လထောကဖို့ို Next ရယဆိုပပီ်း ၂ ပင


ို ်းပါပါတယ။

273 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

1. Value - ဟှာ ကိုယက


် ကန်ြီးပ ညါ့်သမ်ြီး င်ရင် int data type ပြစ်ပ ြီး၊ ဒဿမ သမ်ြီး င်ရင်

float/double data type, စှာလိုြီးခလြီးတစ်လိုြီး သမ်ြီး င်ရင် char data type၊ စှာသှာြီး

သမ်ြီး င်ရင် String data type စသည်ပြငါ့် ထှာြီးလိုို့ရ ါတယ်။

2. Next - ကခတှာါ့ ခနာက် Node တစ် ိုကို ခထှာက်မှာပြစ်လိုို့ Node pointer ပြစ်ရ ါမယ်။

pointer ဆိုတှာ ခထှာက်တှာ ါ။ int ကို ခထှာက်ရင် int pointer, float ကို ခထှာက်ရင် float

pointer။ ဒမှာက Node ကိုခထှာက်ခတှာါ့ Node pointer ပြစ် ါမယ်။ Node pointer ကို

Node* လိုို့ခရြီး ါတယ်။

HEAD

AA BB CC DD NULL

HEAD → Value = AA

AA → Next → Value = BB

BB → Next → Value = CC

CC → Next → Value = DD

DD →Next ဟှာ NULL ပြစ်ခတှာါ့ ရ သ


် ှာြီးခရှာ။ AA, BB, CC, DD ဆိုပ ြီးရ ါတယ်။

Traversing A Simple Linked List

Traversing ဆိုခတှာါ့ HEAD ကခန စပ ြီး Next Next ဆိုပ ြီး ခနာက်ကို ဆက်ဆက်ပ ြီး NULL

ခရှာက်သည် ထ န်ြီးခစါ့သှာြီးမှာ ပြစ် ါတယ်။

274 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

1. If HEAD == NULL then:


2. Write “Empty”
3. Else:
4. SET PTR = HEAD
5. Repeat while PTR != NULL then:
6. Do something on PTR → Value
7. PTR = PTR → Next
8. End of Loop

HEAD ဆိုတှာ ပမဲတမ်ြီးခရှေ့ဆိုြီး Node ကို ခထှာက်ထှာြီးရ ါတယ်။ ခနာက်ကို

ခလ ှာက်ခရှေ့လမ
ိုို့ ရ ါဘူြီး။ ဒါခကကှာငါ့် line 4 မှာ PTR ထဲကို HEAD ထညါ့်လိုက်ပ ြီး PTR ကို ဲ NULL

မခရှာက်မ င်ြီး ဆက်ပ ြီး ခရှေ့သှာြီးမှာပြစ် ါတယ်။ HEAD ကခတှာါ့ ခရှေ့ဆိုြီးမှာ ဲ က န်ခန ဲါ့ြိုို့

ပြစ် ါတယ်။ Trace လိုက်ပ ါမယ်။

Line 4 : SET PTR = HEAD

HEAD PTR

AA BB CC DD NULL

Line 5: PTR က NULL နဲို့ မညဘူြီး။

Line 6: ဒခတှာါ့ PTR → Value ပြစ်တဲါ့ AA ခ ေါ်မှာ တက်တှာ က်တှာ၊ ထိုတ်ပ တှာ ကက က်တှာလို ် ါ။

Line 7: PTR = PTR → Next ကို ထညါ့်တယ်ဆိုတှာ update လို ်တှာပြစ် ါတယ်။ PTR ဟော AA Node

လနရောကလန BB Node လနရောကို လရောက ောမောဖဖစပါတယ။

275 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

PTR
HEAD

AA BB CC DD NULL

Line 5: PTR ဟှာ NULL နဲို့ မညဘူြီး။

Line 6:ဒခတှာါ့ PTR → Value ပြစ်တဲါ့ BB ခ ေါ်မှာ တက်တှာ က်တှာ၊ ထိုတ်ပ တှာ ကက က်တှာလို ် ါ။

Line 7: PTR = PTR → Next ကို ထညါ့်တယ်ဆိုတှာ update လို ်တှာပြစ် ါတယ်။ ခနာက်တစ် Node

ကို ခရှေ့တှာ ပြစ် ါတယ်။ PTR ဟော BB လနရောကလန CC Node လနရောကို လရောက ောမောဖဖစပါတယ။

PTR
HEAD

AA BB CC DD NULL

Line 5: PTR ဟှာ NULL နဲို့ မညဘူြီး။

Line 6:ဒခတှာါ့ PTR → Value ပြစ်တဲါ့ CC ခ ေါ်မှာ တက်တှာ က်တှာ၊ ထိုတ်ပ တှာ ကက က်တှာလို ် ါ။

Line 7: PTR = PTR → Next ကို ထညါ့်တယ်ဆိုတှာ update လို ်တှာပြစ် ါတယ်။ ခနာက်တစ် Node

ကို ခရှေ့တှာ ပြစ် ါတယ်။ PTR ဟော CC လနရောကလန DD Node လနရောကို လရောက ောမောဖဖစပါတယ။

PTR
HEAD

AA BB CC DD NULL

276 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Line 5: PTR ဟှာ NULL နဲို့ မညဘူြီး။

Line 6:ဒခတှာါ့ PTR → Value ပြစ်တဲါ့ DD ခ ေါ်မှာ တက်တှာ က်တှာ၊ ထိုတ်ပ တှာ ကက က်တှာလို ် ါ။

Line 7: PTR = PTR → Next ကို ထညါ့်တယ်ဆိုတှာ update လို ်တှာပြစ် ါတယ်။ ခနာက်တစ် Node

ကို ခရှေ့တှာ ပြစ် ါတယ်။ PTR = PTR → Next = NULL ဆိုပ ြီး PTR ထဲ ကို NULL

ခရှာက်သှာြီးမှာပြစ် ါတယ်။

Line 5: PTR ဟှာ NULL နဲည


ို့ သှာြီးခတှာါ့ looping ရ သ
် ှာြီးမှာ ပြစ် ါတယ်။

Displaying a Simple Linked List

1. If HEAD == NULL then:


2. Write “Empty”
3. Else:
4. SET PTR = HEAD
5. Repeat while PTR != NULL:
6. Write PTR → Value, “ “
7. PTR = PTR → Next
8. End of Loop

ဒါကခတှာါ့ ရည်ရည်ခ ြီးခ ြီး ထ ်ရင်ြီးပ စရှာမလိုခလှာက်ခတှာါ့ဘူြီး ထင် ါတယ်။ ခ ေါ်က

Traversing ရဲှေ့ do something ခနရှာမှာ Write ပြစ်သှာြီးတှာခလြီး ါ ဲ။

လ ေ့ကျငေ့ကကညေ့ကကရလအောင။

1. Node ရဲှေ့ Value ဟှာ int ပြစ်တယ်ဆို ါခတှာါ့။ Linked List ထဲက Node ှာြီးလိုြီးရဲှေ့ Value

ှာြီးလိုြီးခ ါင်ြီးလဒ်ကို တက်ခ ြီးတဲါ့ algorithm ကို ခရြီးခ ြီး ါ။ ခ ါင်ြီးမှာ ပြစ်တဲါ့ တက် total

277 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

ဆိုတဲါ့ ခပြထညါ့မ
် ညါ့် variable ထဲကို 0 assign လို ်ထှာြီးခ ြီး ါ။ ပ ြီးမ node တစ် ို င်ြီးရဲှေ့

value ခတကို total ထဲ သှာြီးသှာြီးခ ါင်ြီး ါ။ Node ှာြီးလိုြီးတန်ြိုြီး ခ ါင်ြီးတှာ ပ ြီးသှာြီးလိုို့

ဆက်သှာြီးစရှာမရခတှာါ့ ဲ NULL နဲို့ ညသှာြီးပ ဆိုမ total ကို return ပ န်ခ ြီး ါ။

2. Linked list ထဲမ Value 100 ထက်ကကြီးတှာခတကို ထိုတ်ပ မညါ့် algorithm ကို ခရြီး ါ။

3. ဂဏန်ြီးတစ်လိုြီးကို parameter ပြစ်လက် ပ ြီး ဲဒတန်ြိုြီးကို Linked list ထဲမှာ ါမ ါ

လိုက်ရှာ ါ။ ခတှေ့တယ်ဆိုရင် parameter is found ဆိုပ ြီး ထိုတ်ပ ါ။ မခတှေ့ဘူြီးဆိုရင်

parameter is not found လိုို့ ထိုတ်ပ ါ။

Inserting a Node into Simple Linked List

Node တစ် ိုကို simple linked list ထဲ ထညါ့်ခတှာါ့မယ် ဆိုရင် ပြစ်နိုင်ခ 2 မ ြီး ရ ါတယ်။

1. Node တစ် ိုမ မရခသြီးလိုို့ HEAD ကခထှာက်စရှာမရ ဲ NULL ပြစ်ခနတယ်။ ဒခတှာါ့ ထညါ့်တါ့ဲ

Node က ထမဆိုြီး Node ပြစ်သှာြီးလိုို့ HEAD ထဲ ထညါ့်ရတှာ။

2. လက်ရ ခနာက်ဆိုြီး Node ကိုရှာပ ြီး သူရဲှေ့ခနာက်မှာ သှာြီးထညါ့်တှာ။

1. လရှေ့ဆို်း Node အဖဖစထညေ့တော

If HEAD == NULL then:


HEAD = newNode

2. လနောကဆို်း Node ရဲှေ့လနောကမော သော်းထညေ့တော။

HEAD

AA BB DD NULL
TT NULL

278 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

TT Node က သစ်ထညါ့်မညါ့် newNode ပြစ် ါတယ်။ ဒခတှာါ့ ခနာက်ဆိုြီး Node ကို ရင်ရှာရမှာ

ပြစ် ါတယ်။ ခနာက်ဆိုြီး Node ဆိုတှာ Next က NULL ပြစ်ခနတဲါ့ Node ပြစ် ါတယ်။ မ
ို ှာ

ကကညါ့်ကကညါ့် ါ။ ဒါခကကှာငါ့် PTR ထဲကို HEAD ထညါ့်ပ ြီး Next က NULL နဲို့ မညမ င်ြီး သှာြီး ါ ါ့မယ်။ Next

က NULL ပြစ်ပ ဆိုခတှာါ့မ ခနာက်ဆိုြီး Node ကို ခရှာက်သှာြီးပ ပြစ်လိုို့ PTR ရဲှေ့ Next ထဲကို

newNode ကို ထညါ့်ရမှာ ပြစ် ါတယ်။

Set PTR = HEAD


Repeat while PTR → Next != NULL:
PTR = PTR → Next
End of Loop
PTR → Next = newNode

Inserting Algorithm ကို စ ဆိုြီး ပ န်ခရြီးမယ်ဆိုရင်

Insert(newNode)

1. If HEAD == NULL then:


2. HEAD = newNode
3. Else:
4. Set PTR = HEAD
5. Repeat while PTR → Next != NULL:
6. PTR = PTR → Next
7. End of Loop
8. PTR → Next = newNode

Deleting a Node from Simple Linked List

Value ကိုခ ြီးမယ်။ ဲဒခ ြီးလိုက်တါ့ဲ value နဲို့တူတဲါ့ value ရတဲါ့ Node တစ် ိုကို simple linked list

ထဲကခန လိုက်ရှာပ ြီး ြ က်မယ်ဆိုရင် ပြစ်နင


ို ်ခ ၃ မ ြီး ရ ါတယ်။

279 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

1. ခရှေ့ဆိုြီး Node ကိုြ က်တှာ၊

2. လယ် Node ကို ြ က်တှာ၊

3. ခနာက်ဆိုြီး Node ကို ြ က်တှာ တိုို့ ပြစ် ါတယ်။

1. လရှေ့ဆို်း Node ကိုဖျကတော၊

HEAD

AA BB DD NULL

AA Node ကို ဖျကပါ ေ့မယ။

▪ ခရှေ့ဆိုြီး Node ကို ြ က်မှာပြစ်လိုို့ ဒိုတယ Node ကို HEAD က သှာြီးခထှာက်ရမှာ ပြစ် ါတယ်။

ို ရဆိုရင် BB Node ကို HEAD ကသှာြီးခထှာက်ရမှာ ပြစ် ါတယ်။

▪ ဒိုတယ Node ကို HEAD ကသှာြီးမခထှာက် င် PTRထဲကို HEAD ထညါ့် ါမယ်။

▪ ပ ြီးမ PTR ကို ြ က် စ်ရမှာပြစ် ါတယ်။

Set PTR = HEAD

If HEAD → value == x then:

HEAD = HEAD → Next

Free (PTR)

2. အ ယ Node ကိုဖျကတော၊

HEAD

AA BB DD NULL

280 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

BB Node ကို ဖျကချငတယ ဆိုပါလတောေ့။

▪ ြ က်မညါ့် Node ရဲှေ့ ခရှေ့ က Node ( ို ရဆိုရင် AA Node) ကို prev လိုို့ထှာြီး ါ ါ့မယ်။

▪ Arrow ခလြီးနဲို့ ပ ထှာြီးသလို ါ ဲ prev ရဲှေ့ Next ထဲကို ဖျကမညေ့ Node ရဲှေ့ Next ကို ထညါ့်ရမှာ

ပြစ် ါတယ်။ (ပ ထှာြီးတဲါ့ ို ရဆိုရင် Prevရဲှေ့ Next ဆိုတှာက AA ရဲှေ့ Next ပြစ်ပ ြီး ြ က်မညါ့် Node

BB ရဲှေ့ Next ဆိုတှာ DDကို ခပ ှာတှာပြစ် ါတယ်။ BB ြ က်လိုက်လိုို့ AA Node က DD Node ကို

သှာြီးခထှာက်ြိုို့ ပြစ် ါတယ်။)

ဒါခကကှာငါ့် Prev ဆိုတဲါ့ pointer တစ် ိုထ ်ပ ြီးလို ါတယ်။ PTR က ခနာက်ကို မခရှေ့ င် PTR ခနရှာကို

Prev ထှာြီးခ ြီး ဲါ့ရမှာပြစ် ါတယ်။ ဒါမှာ PTR က ြ က်မညါ့် Node ကို ခရှာက်သှာြီး န်မှာ ြ က်မညါ့်

Node ရဲှေ့ ခရှေ့ Node ကို Prev က ခထှာက်ထှာြီးမှာပြစ် ါတယ်။

Prev → Next = PTR → Next

Free (PTR)

3. လနောကဆို်း Node ကို ဖျကတော။

HEAD

AA BB CC NULL

ခနာက်ဆိုြီး Node ကို ြ က်မယ် ဆိုတှာ ဘယ်လို သမလဲဆိုရင် ြ က်မညါ့် Node ရဲှေ့ Next ဟှာ NULL နဲို့

ညရင် ြ က်မညါ့် Node ဟှာ ခနာက်ဆိုြီး Node ပြစ် ါတယ်။ ခနာက်ဆိုြီး Node CC ကို ြ က်မယ်ဆိုရင်

Prev Node (BB Node) ဟှာခနာက်ဆိုြီး Node ပြစ်သှာြီးမယ်။ ဒခတှာါ့ BB ရဲှေ့ Next ထဲကို NULL

ထညါ့်ခ ြီးရမယ်။

281 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

BBNode → Next = NULL လိုို့ခရြီးတှာနဲို့ BBNode→ Next = CCNode →Next တူတူ ါ ဲ။

ဘှာခကကှာငါ့်လဲဆိုရင် CCNode ရဲှေ့ Next ဟှာလည်ြီး NULL ပြစ်ခနလိုို့ ါ။ ဒါခကကှာငါ့် Prev → Next =

PTR →Next လိုို့ ခရြီးလိုို့ရ ါတယ်။ (PTR ဆိုတှာ ြ က်မညါ့် Node, Prev ဆိုတှာ ြ က်မညါ့် Node ရဲှေ့

ခရှေ့ Node ပြစ် ါတယ်။)

Prev → Next = PTR → Next

Free (PTR)

တူခနလိုို့ လယ် Node ြ က်တှာနဲို့ ခနာက်ဆိုြီး Node ြ က်တှာကို ခ ါင်ြီးခရြီး ါမယ်။

Set Prev = PTR

While PTR → Value != x and PTR != NULL then:

Prev = PTR

PTR = PTR → Next

End of Loop

If PTR==NULL then:

Return false

Else:

Prev → Next = PTR → Next

Free (PTR)

Return true

ြ က်လိုို့ ခ ှာင်ပမင်ရင် ခ ှာင်ပမင်ခကကှာင်ြီး return true, ရှာမခတှေ့လိုို့ မြ က်ရဘူြီးဆိုရင်

မခ ှာင်ပမင်လိုို့ return false ဆိုပ ြီး ပ န်ခ ြီးမှာ ပြစ် ါတယ်။

PTR ဟှာ ခရှေ့ဆိုြီး Node ကခနစပ ြီး ရှာလိုက်တှာ ခတှေ့ရင်ရ ်သှာြီးမှာပြစ် ါတယ်။

မခတှေ့လိုို့ဆက်သှာြီးရင်ခတှာါ့ ခနာက်ဆိုြီး NULL နဲို့ ညသှာြီးမှာ ပြစ် ါတယ်။ ဒါခကကှာငါ့် NULL နဲို့

ညသှာြီးသလှာြီးဆိုပ ြီး while loop မှာ ထညါ့်စစ်ထှာြီးတှာပြစ် ါတယ်။ Loop ထဲက

282 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

ထက်လှာတဲါ့ န်မှာလည်ြီး PTR ဟှာ NULL နဲို့ ညလိုို့ ထက်လှာတှာလှာြီး စစ်တယ်။ NULL နဲို့

ညလိုို့ထက်လှာတှာဆိုရင် မခတှေ့လိုို့ PTR ဟှာ NULL ထ ခရှာက်သှာြီးတှာပြစ် ါတယ်။ PTR ဟှာ

NULL နဲို့ မည ဲ ထက်လှာတယ်ဆိုရင်ခတှာါ့ PTR → Value == x ပြစ်လိုို့ပြစ် ါတယ်။ x ကို

ခတှေ့လိုို့ထက်လှာတှာပြစ် ါတယ်။

Delete Algorithm ကို စ ဆိုြီး ပ န်ခရြီးမယ်ဆိုရင်

delete(x)

1. Set PTR = HEAD


2. If HEAD == NULL then: /*no Node in Linked List*/
3. Return false
4. If HEAD → value == x then: /*Found x in first Node*/
5. HEAD = HEAD → Next
6. Free (PTR)
7. Return true
8. Set Prev = PTR
9. While PTR → Value != x and PTR != NULL then:
10. Prev = PTR
11. PTR = PTR → Next
12. End of Loop
13. If PTR==NULL then: /*x not found*/
14. Return false
15. Else: /*found in middle or Last Node*/
16. Prev → Next = PTR → Next
17. Free (PTR)
18. Return true

283 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

လ ေ့ကျငေ့ကကညေ့ကကရလအောင။

Linked List ထဲမှာ 40, 30, 20, 10, 55, 33, 77 ဆိုပ ြီး စဉ်လိုက်ရခန ါတယ်။ HEAD ဟှာ 40Node

ကို ခထှာက်ခနမှာပြစ်ပ ြီး၊ 77 ကခတှာါ့ ခနာက်ဆိုြီး Node ပြစ်မှာ ပြစ် ါတယ်။ ခ ှာက် ါတို့က
ို ို trace

လိုက် ါ။

1. delete(40)

2. delete(10)

3. delete(77)

Inserting a Node into Simple Linked List As a Sorted Linked List

Node တစ် ိုကို simple linked list ထဲ ငယ်စဉ်ကကြီးလိုက် sorted order ပြငါ့်ထညါ့်ခတှာါ့မယ် ဆိုရင်

ပြစ်နင
ို ်ခ ၃ မ ြီး ရ ါတယ်။

1. HEAD က NULL ပြစ်ခနခတှာါ့ သမ


ိုို့ ဟိုတ် ထညါ့်မညါ့်တန်ြိုြီးက ငယ်ဆိုြီးပြစ်ခနလိုို့ ထညါ့်တဲါ့

Node က ထမဆိုြီး Node ပြစ်သှာြီးမယ်၊ ဒခတှာါ့ HEAD က ခထှာက်ရမယ်။

2. လယ်မှာသှာြီးထညါ့်တှာ။

3. ခနာက်ဆိုြီးမှာ သှာြီးထညါ့်တှာ တို့ပို ြစ် ါတယ်။

1. လရှေ့ဆို်း Node အဖဖစထညေ့တော

a. HEAD ဟော NULL ဖဖစလနလတောေ့ HEAD မောထညေ့မယ။

If HEAD == NULL then:


HEAD = newNode
b. ထညေ့မညေ့တနဖို်းက HEAD ထကငယလနတယ။

284 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

10 ထညါ့် င်တယ် ဆို ါခတှာါ့။ HEAD ခထှာက်ခနတဲါ့ value က 20 ပြစ်ခနတယ်။ ဒခတှာါ့

HEAD ရဲှေ့ ခရှေ့မှာသှာြီးထညါ့်မယ်။


HEAD

10 NULL 20

New Node

• ထမဆိုြီးခတှာါ့ newNode ရဲှေ့ Next ဟှာ NULL ပြစ်ခနတယ်။ NULL စှာြီး HEAD

ခထှာက်ခနတဲါ့ Node ကို သှာြီးခထှာက်ရမယ်။

• newNode ဟှာ ထမဆိုြီး Node ပြစ်သှာြီးလိုို့ HEAD က သှာြီးခထှာက်ရ ါမယ်။

Else If newNode → Value < HEAD → Value then:


newNode → Next = HEAD

HEAD = newNode

2. အ ယမော သော်းထညေ့တော။

HEAD

10 20 30 NULL

2
1
25 NULL

ငယ်စဉ်ကကြီးလိုက် စတဲါ့ ိုစနငါ့် ထညါ့်မှာ ပြစ်လိုို့ Node တစ် ို ထညါ့်ခတှာါ့မယ်ဆိုရင် HEAD

ခနရှာကခနစပ ြီး ကကညါ့် ါ ါ့မယ်။ ထညါ့် င်တါ့ဲ newNode တန်ြိုြီးထက် ငယ်ခန ဲါ့ရင် ခနာက်ကို

ဆက်သှာြီး ါမယ်။ ကကြီးပ ဆိုခတှာါ့မ ဲဒကကြီးတဲါ့ Node ရဲှေ့ ခရှေ့မှာ newNode ကို ထညါ့်ရမှာ

ပြစ် ါတယ်။ simple linked list ဟှာ Next ဲ ါလိုို့ ခနာက်ကို ဲသှာြီးလိုို့ ရ ါတယ်။ ခရှေ့ပ န်သှာြီးလိုို့

မရတဲါ့ တက် ဒမှာလဲ Prev node လိုမှာပြစ် ါတယ်။

285 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye


ို ှာပ ထှာြီးတဲါ့ တင
ို ်ြီး 25 ကိုထညါ့် င်တယ်၊ ထမ Node 10ဟှာ ထညါ့် င်တါ့ဲ 25

ထက်ငယ်တယ် ဆက်သှာြီးမယ်၊ ဒိုတယ Node 20 ဟှာ ထညါ့် င်တါ့ဲ 25 ထက်ငယ်တယ်

ဆက်သှာြီးမယ်၊ 30 မငယ်ခတှာါ့ဘူြီး ရ မ
် ယ်။

ဲဒ န်မှာ 30 က PTR ပြစ်ပ ြီး၊ Prev က 20 ကို ခထှာက်ထှာြီးမယ်။

▪ newNode ရဲှေ့ Next ဟှာ 30 ပြစ်တဲါ့ PTR ကို သှာြီးခထှာက်ရမယ်။

▪ Prev ပြစ်တဲါ့ 20 ရဲှေ့ Next ဟှာ newNode ကို သှာြီးခထှာက်ရ ါမယ်။

Set PTR = HEAD


Set Prev = PTR
Repeat while PTR != NULL and PTR → value < newNode → Value:
Prev = PTR
PTR = PTR → Next
End of Loop
If PTR == NULL then:
---------
Else:
newNode → Next = PTR
Prev → Next = newNode

3. လနောကဆို်းမော သော်းထညေ့တော

HEAD

10 20 30 NULL

45 NULL

286 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

ဒမှာဆိုရင် ထညါ့် င်တှာက 45 ဆိုခတှာါ့ ရပ ြီးသှာြီး 10,20,30 Node values ခတ ှာြီးလိုြီးထက်

ကကြီးခနခတှာါ့ PTR က သှာြီးရင်ြီး NULL နဲို့ညသှာြီးခတှာါ့ looping ရ သ


် ှာြီးတှာပြစ် ါတယ်။ PTR NULL

ပြစ်သှာြီးတဲါ့ န်မှာ 30 ဟှာ Prev ပြစ်ခန ဲါ့မှာ ါ။ ဒခတှာါ့ Prev → Next = newNode ဆိုရင်

ဆင်ခပ သှာြီး ါပ ။

PTR က NULLနဲို့ညသှာြီးလိုို့ looping ထဲက ထက်လှာတှာ တက် တနည်ြီး ှာြီးပြငါ့် ခနာက်ဆိုြီး

Node ပြစ်ထညါ့်တှာ တက် သှာြီးခရြီး ါ ါ့မယ်။

End of Loop
If PTR == NULL then:
Prev → Next = newNode

Inserting as a Sorted Linked List Algorithm ကို စ ဆိုြီး ပ န်ခရြီးမယ်ဆိုရင်

InsertSorted(newNode)

1. If HEAD == NULL then: /*no node in linked list*/


2. HEAD = newNode
3. Else If newNode → Value < HEAD → Value then: /*newNode value is < HEAD
node*/
4. newNode → Next = HEAD
5. HEAD = newNode
6. Set PTR = HEAD
7. Set Prev = PTR
8. Repeat while PTR != NULL and PTR → value < newNode → Value:
9. Prev = PTR
10. PTR = PTR → Next
11. End of Loop
12. If PTR == NULL then: /*newNode value is greater than values of existing nodes*/
13. Prev → Next = newNode
14. Else: /*insert newNode between existing two nodes*/

287 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

15. newNode → Next = PTR


16. Prev → Next = newNode

လ ေ့ကျငေ့ကကညေ့ကကရလအောင။
1. ခ ေါ်က insertSorted algorithm ကို ကကြီးစဉ်ငယ်လိုက်ထညါ့်တှာ တက်ဆို

ဘယ်ခနရှာခတ ပ င်ခရြီးရမလဲ။

2. BB, CC, DD, EE, FF ရခနတဲါ့ Sorted Linked List ထဲကို

a. CD ထညါ့်ရန် trace လိုက် ါ။

b. GG ထညါ့်ရန် trace လိုက် ါ။

c. AA ထညါ့်ရန် trace လိုက် ါ။

Doubly Linked List

Prev Value Next

Doubly Linked List မှာဆိုရင် pointer က နစ် ို ပြစ်သှာြီးတှာ ါ။ တစ် ိုက ခရှေ့ကNode ကို

ခထှာက်မညါ့် Prev ပြစ်ပ ြီး၊ က န်တစ် ိုက ခနာက်ကNode ကိုခထှာက်မညါ့် Next ပြစ် ါတယ်။

HEAD TAIL

NULL 10 20 30 NULL

▪ ခရှေ့ခထှာက်မညါ့် Prev နငါ့် ခနာက်ကိုခထှာက်မည်ါ့ Next ဆိုပ ြီး pointer နစ် ို ါတှာဆိုခတှာါ့

ခရှေ့ခနာက် ပ န်ပ န် လန်လန်သှာြီးလိုို့ရပ ပြစ် ါတယ်။

288 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

▪ ခနာက်ကို သှာြီး င်ရင် HEAD ကခနစမယ်။ ပ ြီးရင် Next ဟှာ NULL နဲို့ မညမ င်ြီးသှာြီးလိုို့ရမယ်။

▪ ခရှေ့ကိုသှာြီး င်ရင် TAIL ကခနစမယ်။ ပ ြီးရင် Prev ဟှာ NULL နဲို့ မညမ င်ြီး သှာြီးလိုို့ရမယ်။

လရှေ့ကလန လနောကကို ထိုတကကညေ့ရလအောင

Set PTR = HEAD


Repeat while PTR != NULL then:
Write PTR → Value, “ “
PTR = PTR → Next
End of Loop

လနောကကလန လရှေ့ကို ဖပနထိုတချငရင

Set PTR = TAIL


Repeat while PTR != NULL then:
Write PTR → Value, “ “
PTR = PTR → Prev
End of Loop

Insert တိုို့ Delete တို့မ


ို ှာလဲ Next တစ် ိုတည်ြီးမဟိုတခ
် တှာါ့ ဲ Prev ထညါ့်ပ ြီးစဉ်ြီးစှာြီးရတှာခလြီး ဲ


ို ှာမှာပြစ် ါတယ်။

Inserting a Node into Doubly Linked List

Node တစ် ိုကို Doubly linked list ထဲ ထညါ့်ခတှာါ့မယ် ဆိုရင် ပြစ်နိုင်ခ 2 မ ြီး ရ ါတယ်။

1. Linked List ထဲမှာ Node တစ် ိုမ မရခသြီးတဲါ့ ခပ ခန။

2. လက်ရ ခနာက်ဆိုြီး Node ကိုရှာပ ြီး သူရဲှေ့ခနာက်မှာ သှာြီးထညါ့်တှာ။ ဒါဆို ိုထညါ့်လိုက်တါ့ဲ

newNode ကို TAIL က ခထှာက်ရမယ်။

289 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

1. Linked List ထဲမော Node တစခိုမ မရလသ်းတဲေ့ အလဖခအလန။

Linked list ထဲမှာ Node တစ် ိုမ မရခသြီးရင် HEAD ခရှာ၊ TAIL ါ ခထှာက်စရှာမရလိုို့ NULL

ပြစ်ခနမှာ ပြစ် ါတယ်။ သစ် င်လှာတဲါ့ newNode သည် တစ် ိုတည်ြီးခသှာ Node ပြစ်မှာ

ပြစ်ပ ြီး တစ် ိုတည်ြီးရတှာပြစ်လိုို့ ခရှေ့ဆိုြီး Node ဆိုလည်ြီး newNode ါ ဲ။ ခနာက်ဆိုြီး Node

ဆိုလည်ြီး newNode ဲပြစ် ါတယ်။ ဒါခကကှာငါ့် HEADခရှာ TAIL ါ သူူ့ကို ခထှာက်ရမှာ

ပြစ် ါတယ်။

If HEAD == NULL then:


HEAD = newNode
TAIL = newNode
ဒခနရှာမှာ HEAD == NULL စှာြီး TAIL == NULL လိုို့ ခပ ှာင်ြီးစစ်လည်ြီး

တူတူ ပဲ ြစ် ါတယ်။ ဘှာလိုို့လဲဆိုရင် Node တစ် ိုမ မရခသြီးတဲါ့ ခပ ခနမှာ HEAD ခရှာ

TAIL ါ NULL ပြစ်ခနမှာခကကှာငါ့် ပြစ် ါတယ်။

2. ကရ လနောကဆို်း Node ကိုရောပပီ်း သူရဲှေ့လနောကမော သော်းထညေ့တော။

HEAD TAIL

NULL 10 20 30 NULL

40 NULL


ို ှာ ပ ထှာြီးတဲါ့ တင
ို ်ြီး newNode 40 ကို လက်ရ TAIL ရဲှေ့ခနာက်မှာ ထညါ့်လိုက်ရို ါ ဲ။ ပ ြီးရင်

newNode ဟှာခနာက်ဆြီးို Node ပြစ်သှာြီးလိုို့ TAIL က newNode ကို သှာြီးခထှာက်ခ ြီးရမှာ

ပြစ် ါတယ်။

TAIL → Next = newNode


newNode→Prev = TAIL
TAIL = newNode

290 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

TAIL → Next = newNode ဆိုတှာ 30 Node ရဲှေ့ Next က သစ် င်လှာတဲါ့ 40 Node

ကိုသှာြီးခထှာက်တှာ ပြစ် ါတယ်။

TAIL

30 40 NULL

newNode → Prev = TAIL ဆိုတှာ သစ် င်လှာတဲါ့ 40 Node က 30 Node ကိုသှာြီးခထှာက်တှာ

ပြစ် ါတယ်။

TAIL

30 40 NULL

TAIL = newNode ဆိုတှာကခတှာါ့ newNode ဟှာ ခနာက်ဆိုြီးပြစ်သှာြီးလိုို့ TAIL ကသှာြီးခထှာက်တှာ

ပြစ် ါတယ်။
TAIL

30 40 NULL

Doubly Linked List ရဲှေ့ Inserting Algorithm ကို စ ဆိုြီး ပ န်ခရြီးမယ်ဆိုရင်

InsertIntoDLL(newNode)

1. If HEAD == NULL then:


2. HEAD = newNode
3. TAIL = newNode
4. Else:
5. TAIL → Next = newNode
6. newNode→Prev = TAIL
7. TAIL = newNode

291 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Deleting a Node from Doubly Linked List

Node တစ် ိုကို doubly linked list ထဲကခန လိုက်ရှာပ ြီး ြ က်ခတှာါ့မယ် ဆိုရင် simple linked list

လို ဲ ပြစ်နင
ို ်ခ ၃ မ ြီး ရ ါတယ်။

1. ခရှေ့ဆိုြီး Node ကိုြ က်တှာ၊

2. လယ် Node ကို ြ က်တှာ၊

3. ခနာက်ဆိုြီး Node ကို ြ က်တှာ တိုို့ ပြစ် ါတယ်။

1. လရှေ့ဆို်း Node ကိုဖျကတော၊

HEAD TAIL

NULL 10 20 30 NULL

▪ PTR ထဲကို HEAD ထညါ့်။

▪ HEAD ကို HEAD ရဲှေ့ Next ( ို ရဆို 20 Node က)ို ခရှေ့ရမယ်။

▪ ခရှေ့ပ ြီးသှာြီး HEAD (20 Node) ခရှေ့ဆိုြီးပြစ်လှာမှာပြစ်လိုို့ သူူ့ခရှေ့မှာ ဘှာမ မရခတှာါ့လိုို့ သူူ့ရဲှေ့ prev

ထဲကို NULL ထညါ့်။

▪ ပ ြီးမ ရင် HEAD ခနရှာ ထှာြီး ဲါ့တါ့ဲ PTR (10 Node) ကို ြ က် စ်ရမှာပြစ် ါတယ်။

Set PTR = HEAD

If HEAD → value == x then:

HEAD = HEAD → Next

HEAD → Prev = NULL

Free (PTR)

292 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

2. အ ယ Node ကိုဖျကတော၊

HEAD TAIL

NULL 10 20 30 NULL

20 Node ကို ဖျကချငတယ ဆိုပါလတောေ့။

▪ ို ရဆိုရင် 10 Node ရဲှေ့ Next ဟှာ 30 Node ကို သှာြီးခထှာက်ပ ြီး၊ 30 Node ရဲှေ့ prev ဟှာ 10

node ကို သှာြီးပ ြီး ခထှာက်ရမှာ ပြစ် ါတယ်။ ပ ြီးမ ြ က်မညါ့် Node ကို Free လို ် ါမယ်။

▪ 10 Node ဆိုတှာ ြ က်မညါ့် node ရဲှေ့ Prev

▪ 30 Node ဆိုတှာ ြ က်မညါ့် Node ရဲှေ့ Next

While PTR → Value != x and PTR != NULL:

PTR = PTR → Next

End of Loop

If PTR==NULL then:

Return false

Else if PTR != TAIL:

PTR → Next →Prev = PTR → Prev

PTR → Prev → Next = PTR → Next

Free (PTR)

Return true

293 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

3. လနောကဆို်း Node ကို ဖျကတော။

ခနာက်ဆိုြီး Node ကို ြ က်တယ်ဆိုတှာ TAIL Node ကို ြ က်တှာပြစ်လိုို့ TAIL ရဲှေ့ prev ဟှာ TAIL

ပြစ်သှာြီးမှာ ပြစ် ါတယ်။

If TAIL → Value == x then:


PTR = TAIL
TAIL = TAIL → Prev
TAIL → Next = NULL
Free (PTR)
Return true

Doubly Linkde List Delete Algorithm ကို စ ဆိုြီး ပ န်ခရြီးမယ်ဆိုရင်

deleteFromDLL(x)

1. Set PTR = HEAD


2. If HEAD == NULL then: /*no node to delete*/
3. Return false
4. If HEAD → value == x then: /*delete first node in doubly linked list*/
5. HEAD = HEAD → Next
6. HEAD → Prev = NULL
7. Free (PTR)
8. Return true
9. Else if TAIL → Value == x then: /*delete last node*/
10. PTR = TAIL
11. TAIL = TAIL → Prev
12. TAIL → Next = NULL
13. Free (PTR)
14. Return true
15. While PTR → Value != x and PTR != NULL: /*find node to delete*/
16. PTR = PTR → Next
17. End of Loop

294 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

18. If PTR==NULL then: /*no found*/


19. Return false
20. Else: /*delete middle node between existing two nodes*/
21. PTR → Next →Prev = PTR → Prev
22. PTR → Prev → Next = PTR → Next
23. Free (PTR)
24. Return true

လ ေ့ကျငေ့ကကညေ့ကကရလအောင။
1. Simple Linked List ရဲှေ့ sorted စ
ို နဲို့ထညါ့်တှာကို ကကညါ့်ပ ြီး doubly linked list တက်

sorted စ
ို နဲို့ ထညါ့်တှာကို ပ န်ခရြီးခ ြီး ါ။ကကြီးစဉ်ငယ်လိုက်ထညါ့်တှာရယ်၊ ငယ်စဉ်ကကြီးလိုက်

ထညါ့်တှာရယ် တက် algorithm ၂ ိုခရြီးခ ြီးရမှာပြစ် ါတယ်။

2. Doubly Linked List မှာ HEAD, TAIL ဆိုပ ြီး pointer ၂ ိုကို သိုြီးပ ပ ြီး လို ်လို ်သှာြီးတှာ

ပြစ် ါတယ်။ HEAD pointer တစ် ို ဲ သိုြီးပ ပ ြီး လို ်လို လ


် ိုို့ ရ ါတယ်။ ဒါခကကှာငါ့်

doubly linked list တက် algorithms ခတကို HEAD pointer တစ် ို ဲ သိုြီးပ ပ ြီး

ပ န်ခရြီးခ ြီး ါ။ ပ ြီးရင် pointer 2 ိုသိုြီးတှာ နဲို့ pointer 1 ိုသိုြီးတှာ ဘယ်ဟှာက

သိုြီးရ ဆင်ခပ သလဲခပြ ါ။

Circular Linked List

Circular Linked List ကခတှာါ့ လ


ို ှာတှာ တစ် ိုခလြီး ဲ ရ ါတယ်။ ခနာက်ဆိုြီး Node ကခနပ ြီး

ခရှေ့ဆိုြီး Node ကို ပ န်ခထှာက်တှာ ပြစ် ါတယ်။ ဒါခကကှာငါ့် Circular Linked List မှာ ခနာက်ဆိုြီး Node

လှာြီး စစ် င်ရင် ရင်လို Next က NULL နဲို့ညတှာ စှာြီး Next က HEAD နဲို့ ညတှာခပ ှာင်ြီးစစ်ရမှာ

ပြစ် ါတယ်။

295 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

ခနာက်တစ် ိုကခတှာါ့ ခနာက်ဆိုြီးမှာ newNode ကိုသှာြီးထညါ့်ရင် newNode ရဲှေ့ Next ထဲကို

HEAD ပ န်ထညါ့်ခ ြီး ဲါ့ရမှာ ပြစ် ါတယ်။ လယ်က Node ခတ၊ ခရှေ့ဆိုြီး Node

လို ်လို ် ခ
ို တဟှာ ကှာြီးပ ှာြီး က်မရ ါဘူြီး။

HEAD

10 20 30 40

လ ေ့ကျငေ့ကကညေ့ကကရလအောင။

Simple Linked List နဲို့ doubly linked list ကို ခသ ှာခပ ှာပ ြီးသှာြီးပ ၊ ပ ြီးခတှာါ့ circular linked list

ရဲှေ့ ကှာပ ှာြီး က်ကိုလည်ြီး ခပ ှာ ဲါ့ပ ြီးပ ပြစ်တှာခကကှာငါ့် traversing, insert, delete, insertSorted

စတဲါ့ algorithms ခတကို circular linked list တက် ကက ြီးစှာြီးပ ြီး ခရြီးကကညါ့်ခ ြီး ါ။

Chapter အနစချျုပ

▪ ဒ န်ြီးမှာ ခပ ှာသှာြီးတဲါ့ linked list ဆိုတှာ လဲ array ကို လို ် က် ရ ခပ ှာင်ြီးသိုြီးတဲါ့


ို တစ်မ ြီး ပြစ် ါတယ်။

▪ ဒါခကကှာငါ့် Array ကို စ


ို မ ြီးစိုခပ ှာင်ြီးသိုြီးတဲါ့ ထဲက Stack, Queue, Hashing, Linked List

ခကကှာင်ြီးခတ ခပ ှာ ဲါ့ပ ြီးပ ပြစ် ါတယ်။

▪ ဲဒါခတ ှာြီးလိုဟှာ ဒခနာက် ိုင်ြီး programming language ခတမှာ language က

ကက တင်ပ ြီး implement လို ်ထှာြီးခ ြီးပ ြီး (ကက တင်ခရြီးသှာြီးထှာြီးခ ြီးပ ြီး) ပြစ် ါတယ်။

296 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

▪ ဒါခကကှာငါ့် programmer က ခရြီးစရှာမလိုခတှာါ့ ဲ language က ကက ခရြီးထှာြီးတှာကို

လယ်တကူ ယူသိုြီးလိုို့ရ ါတယ်။

▪ သခ
ိုို့ သှာ် က ြီး၊ ပ စ် မသ ဲ ခတှေ့ရှာခလ ှာက်သိုြီးရင် ခသ ှာခ ါက် run time မှာ

ခသ ှာခ ါက် စကှာြီး ခပ ှာမှာ ပြစ် ါတယ်။

▪ Linked List ကို ဲ ကကညါ့်ကကညါ့် ါ၊ တစ် ို ိုထညါ့် င်တှာပြစ်ပြစ်၊ တစ် ို ို ြ က် င်တှာပြစ်ပြစ်

Next စတဲါ့ link ခတခပ ှာင်ြီး တ်ခနရတှာနဲို့ န်ယူခနတှာပြစ် ါတယ်။ ရိုြီးရိုြီး array မှာခတှာါ့

ဲဒလို လို ်ြမ


ိုို့ လို ်လိုို့ န်ကိုန်သက်သှာ ါတယ်။

297 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

အခန်း (၁၆)

Tree

Tree or Hierarchical Structure

Tree ဆိုတာ အဆင့်ဆင့် ခွဲခွဲသာွားတွဲ Hierarchical ပံစ


ို ံနွဲဲ့ သမ့်ွားချင့်တွဲ အခါမာ သံိုွားတယ့်ဆိုတာ

ရ ှေ့မာ ရ ပာခွဲ ပပြီွားပါပပြီ။

B C

D E F G

H I

▪ Node: ဒြီမာ ပထာွားတွဲ အဝိုင့်ွားရ ွား တစ့်ခိုချင့်ွားစြီကို Node ိုဲ့ရခေါ်ပါတယ့်။

▪ Key: အွဲဒြီ Node ထွဲမာပါတွဲ A,B,C ဆိုတာရ ွားရတကိုရတာ key ိုဲ့ရခေါ်ပါတယ့်။ ဒါရ ကာင့် Node

တစ့်ခိုမာ Key ယ့်၊ ပပြီွားရတာ သူ့ရအာက့်က Node ရတကို ပန့်ရထာက့်မည့် Node pointer

ရတ ယ့် ပါမာ ြစ့်ပါတယ့်။

▪ Parent and child: A ဆတ


ို ွဲ Node ရအာက့်မာ B နွဲဲ့ C ဆိုပပြီွား Node နစ့်ခို ပါတယ့်။ ဒါရ ကာင့် A

ကို B နွဲဲ့ C ွဲှေ့ parent ိုဲ့ရ ပာပပြီွား၊ အ ပန့်အ န့်အရနနွဲဲ့ B နွဲဲ့ C ကို A ွဲှေ့ child ရတ ိုဲ့ ရ ပာပါတယ့်။

▪ Siblings: Parent တတွဲ node ရတကို siblings ိုဲ့ ရခေါ်ပါတယ့်။ ဥပမာ B နွဲဲ့ C ြစ့်ပါတယ့်။

298 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

▪ Edge: Node တစ့်ခို နွဲဲ့ တစ့် ခာွား node တစ့်ခို အ ကာွားဆက့်ထာွားတွဲ line ရ ွားကို edge ိုဲ့

ရခေါ်ပါတယ့်။

▪ Path: A ကရန H ကိုသာွားမယ့်ဆို င့် ABDH ဆိုပပြီွား သာွား မာ ြစ့်ပါတယ့်။ AB, BD, DH ဆိုတွဲ edge

ရ ွားရတဆက့်ထာွားတာ ြစ့်ပါတယ့်။ အွဲဒြီ ို edge ရ ွားရတဆက့်ထာွားတာကို path ိုဲ့

ရခေါ်ပါတယ့်။

▪ Root: parent မ တွဲ node ကို Root node ိုဲ့ ရခေါ်ပါတယ့်။ ပံိုမာဆို င့်ရတာ A node

ြစ့်ပါတယ့်။

▪ Leaf: ထပ့်ခွဲထာွားတွဲ child တစ့်ရယာက့်မ မ တွဲ node ရတကို ရတာ leaf node ိုဲ့ ရခေါ်ပါတယ့်။

ပထာွားတွဲ ပံမ
ို ာရတာ E, F, G, H, I တိုဲ့ ြစ့်ပါတယ့်။

▪ Subtree: Tree ဆိုတာ subtree ရ ွားရတနွဲဲ့ ြှေ့ွဲ စည့်ွားထာွားတာ ြစ့်ပါတယ့်။ ဒြီမာ တတဂံပံိုစံ

ရ ွားရတ ဝိုင့်ွား ပထာွားတာ ရ ွားကို subtree ိုဲ့ ရခေါ်ပါတယ့်။ subtree တစ့်ခိုချင့်ွားမာ ွဲ Root

node နွဲဲ့ child node ရတ ပါမာ ြစ့်ပါတယ့်။

▪ Level: Level သတ့်မတ့်တွဲ အခါမာ Root node ကို Level 0 ိုဲ့ သတ့်မတ့်ပပြီွား ရအာက့်ရ ာက့်ရ

level တွားို တွားို သာွားရ ြစ့်ပါတယ့်။ ပထာွားတွဲ ပံမ


ို ာဆို င့် B နင့် C ဆို င့် level 1၊ D, E, F, G ဆို င့်

level 2၊ H, I ဆို င့် level 3 ြစ့်ပါမယ့်။

လ ေ့ကျငေ့ကကညေ့ကကရလအောင။

ရအာက့်ကပံက
ို ို ကည့်ပပြီွား ရအာက့်ပါရမွားခန့်ွားရတကို ရ ြပါ။

1. Node ဘယ့်နစ့်ခို ပါသ ွဲ။

2. Edge ဘယ့်နစ့်ခို ပါသ ွဲ။

299 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

3. Root Node ကို ာပါ။

4. Node A ွဲှေ့ child ရတကို ချရ ွားရပွားပါ။

5. J နင့် K ွဲှေ့ parent ကို ာပါ။

6. C ွဲှေ့ siblings ကို ာပါ။

7. Level ဘယ့်နစ့်ခို ပါသ ွဲ။

8. J နင့် K ွဲှေ့ level က ဘယ့်ရ ာက့်ပါ ွဲ။

9. Leaf node ရတကို ာပါ။

10. A ကရန J ကိုသာွား ိုဲ့ မည့် path ကို ာပါ။ အွဲဒြီ path ထွဲမာ Edge ဘယ့်နစ့်ခို ပါပါသ ွဲ။

11. Subtree မျာွားကို ာပပြီွား ဆွဲ ပပါ။

B C D

E F G H I

J K

Binary Tree

Binary tree မာ

▪ Node ရတဟာ Left child နွဲဲ့ Right child ဆိုပပြီွား အမျာွားဆံိုွား child ၂ ခိုပွဲ ပါမယ့်။

အမျာွားဆံိုွား ိုဲ့ ရ ပာထာွားတာ ြစ့် ိုဲ့ node ရတဟာ child မ ည့်ွား တယ့်၊ child ၁

ခိုပွဲ ည့်ွား တယ့်၊ child ၂ခို ည့်ွား တယ့်၊ child ၂ ခိုထက့်ရတာ ရကျာ့် ိုဲ့ ပါဘွား။

▪ Left child ွဲှေ့ key ဟာ parent node ွဲှေ့ key ထက့်ငယ့် ပါမယ့်။

▪ Right child ွဲှေ့ key ဟာ parent node ွဲှေ့ key ထက့် တကြီွား ပါမယ့်။

300 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Left Child Key Right Child

Node ဟာ tree မာ ပတွဲအချန့်မာ အဝိုင့်ွားရ ွားရတနွဲဲ့ ပရပမွဲ ရနောက့်ကယ့်က အ ိုပ့် ိုပ့်တွဲ

အခါမာရတာ ယခို ပထာွားတွဲ ပံအ


ို တင
ို ့်ွား အ ိုပ့် ိုပ့်သာွားမာ ြစ့်ပါတယ့်။ ဒါရ ကာင့် Node တစ့်ခိုမာ

key ယ့်၊ Left child ယ့်၊ Right child ယ့်ဆိုပပြီွား ပါမာ ြစ့်ပါတယ့်။ ထံိုွားစံအတင
ို ့်ွား key ကရတာ

ကိုယတ့် ကြိုက့်တွဲ data type ထာွား ိုဲ့ ပါတယ့်။ Left child နွဲဲ့ Right child ကရတာ node ရတကို

ရထာက့်မာ ြစ့် ိုဲ့ node pointer ြစ့်မာ ြစ့်ပါတယ့်။ Left child ခွဲ င့် Left child ထွဲကို Left child

ြစ့်တွဲ node ကိုသမ့်ွားပပြီွား၊ မ ခွဲ င့် Left child ထွဲကို NULL ထည့်မာ ြစ့်ပါတယ့်။ Right child

က ည့်ွား အ ာွားတပွဲ ြစ့်ပါတယ့်။ ရအာက့်က ပံိုကို နမနော ကည့်ပါ။

3 7

9
2 4

▪ 5 node ဟာ Root node ြစ့်ပါတယ့်။ Left child ွဲှေ့ key ြစ့်တွဲ 3 ဟာ သူ့ ွဲှေ့ key ထက့်ငယ့်ပပြီွား၊

Right child ွဲှေ့ key ြစ့်တွဲ 7 ဟာ သူ့ထက့်တကြီွားပါတယ့်။

▪ 3 node မာ ည့်ွား Left child ွဲှေ့ key ြစ့်တွဲ 2 ဟာ သူ့ထက့်ငယ့်ပပြီွား၊ Right child ွဲှေ့ key ြစ့်တွဲ 4

ဟာ သူ့ထက့်တကြီွားပါတယ့်။

▪ 7 node မာရတာ Right child တစ့်ခိုပွဲ ပါတယ့်။ Right child ြစ့်တွဲ အတက့်

သူ့ထက့်တကြီွားပါတယ့်။ Left child မ တွဲ အတက့် Left child တန့်ြိုွားဟာ NULL ြစ့်ရနမာ

ြစ့်ပါတယ့်။

301 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

ဒြီရတာ Binary tree မာ ာချင့်တာပွဲ ြစ့် ြစ့်၊ ထည့်ချင့်တာပွဲ ြစ့် ြစ့်၊ ြျက့်ချင့်တာပွဲ ြစ့် ြစ့် Left

child ဟာ parent ထက့်ငယ့်တယ့်၊ Right child ဟာ parent ထက့်တကြီွား မယ့်ဆိုတာ ရခါင့်ွားထွဲ

ထည့်ထာွားြဲ့ို ိုပါတယ့်။

Finding a Node in Binary Tree

တန့်ြိုွားရ ွား တစ့်ခိုရပွားပပြီွား Binary tree ထွဲကရန အွဲဒြီ တန့်ြွားို နွဲဲ့ ညြီတွဲ key တွဲ node ကို

ိုက့်ပပြီွား ာပါမယ့်။

▪ ထပ့်ဆံိုွား node ြစ့်တွဲ Root node ကရနစပပြီွား ာပါမယ့်။

▪ ငယ့် င့် Left child ကိုသာွားမယ့်။

▪ တကြီွား င့် Right child ကို သာွားမယ့်။

▪ ညြီ င့် ရတှေ့ ိုဲ့ ညြီတွဲ node ကို return ပန့်ရပွားမယ့်။

▪ သာွား င့်ွား NULL နွဲဲ့ညြီသာွား င့် မရတှေ့ရတာတာ ြစ့် ိုဲ့ မရတှေ့ရ ကာင့်ွား NULL return

ပန့်ပါမယ့်။

Find (x)

1. If Root == NULL then: /*no node in tree*/


2. Return NULL
3. Set Current = Root
4. Repeat while Current != NULL and Current→ key != x:
5. If x < Current → key then:
6. Current = Current → LeftChild
7. Else:
8. Current = Current → RightChild
9. end of loop
10. Return Current

302 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Root node ကရနစပပြီွား ာမာ ြစ့် ိုဲ့ line 3 မာ Current ထွဲကို Root ထည့် ိုက့်ပါတယ့်။

Current ဆိုတာကရတာ Linked list အခန့်ွားက PTR ိုပွဲ ို ာကိုသာွားြဲ့ို သံိုွားတာ ြစ့်ပါတယ့်။

ိုက့် ာတာ ြစ့်တွဲအတက့် မရတှေ့တာ ွဲ ြစ့်နိုင့်တယ့်၊ မရတှေ့ရတာ င့် NULL နွဲဲ့

ညြီသာွားမယ့်။ ဒါရ ကာင့် line 4 ွဲှေ့ while မာ မရတှေ့ရတာ ိုဲ့ NULL နွဲဲ့ ညြီ င့် ည့်ွား ထက့်၊ သိုဲ့မဟိုတ့်

ဝင့် ာတွဲ x နွဲဲ့ Current node ွဲှေ့ key နွဲဲ့ ညြီသာွား ည့်ွား ထက့်ဆိုပပြီွား ရ ွားထာွားပါတယ့်။ ဒြီရတာ

▪ Looping ထွဲကို ရ ာက့် ာတယ့်ဆိုတာ မညြီ ိုဲ့ ာက့်


ရ ာတာ။ မညြီရတာ ြစ့်နင
ို ့်ရချ ၂

ခိုပွဲ တယ့်။ ငယ့်တာနွဲဲ့ တကြီွားတာ။ ငယ့် င့် Current ကို Current ွဲှေ့ Left child ကိုရ ှေ့၊ တကြီွား င့်

Current ကို Current ွဲှေ့ Right child ကို ရ ှေ့ဆိုပပြီွား looping body ထွဲ ရ ွားထာွားတာ

ြစ့်ပါတယ့်။

▪ Looping ထွဲကထက့်တယ့်ဆိုတာ ည့်ွား ြစ့်နင


ို ့်ရချနစ့်ခိုပွဲ တယ့်။ Current ွဲှေ့ key ဟာ x နွဲဲ့

ညြီသာွား ိုဲ့ သမ
ိုဲ့ ဟိုတ့် Current ဟာသာွား င့်ွား သာွား င့်ွား ညြီတာမရတှေ့ရတာဘွဲ NULL

ရ ာက့်သာွားတာ။

1. ဒါဆို Current ဟာ NULL နွဲဲ့ ညြီ င့် မရတှေ့ရတာတာ ြစ့် ိုဲ့ NULL return ပန့်မယ့်။

Current က NULL ြစ့်ရနတွဲ အချန့်မာ NULL ကို return ပန့်တာရ ကာင့် return

Current ရ ွား ိုက့် င့် ပါပပြီ။

2. ထိုဲ့အတပွဲ Current→ key ဟာ x နွဲဲ့ ညြီ ိုဲ့ ထက့် ာတာဆို င့် ည့်ွား Current မာ

ရတှေ့တာ ြစ့်တွဲအတက့် return Current ဆိုပပြီွားရ ွား မာ ြစ့်ပါတယ့်။

အရ ခအရန နစ့်ခို ံိုွား ိုပ့် မာ တရနတွဲအတက့် looping အ ပင့်မာ condition စစ့်စ ာ

မ ိုအပ့်ရတာဘွဲ return Current ဆိုပပြီွား တစ့်ရ ကာင့်ွားတည့်ွား ရ ွား ိုက့်တာ ြစ့်ပါတယ့်။

303 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

60

50 70

0 0

20 55 90

0 0 0

10 25

0 0
ပထာွားတွဲ Tree ထွဲကရန 25 ကို ာတာရ ွားကို arrow ရ ွားရတနွဲဲ့ trace ိုက့် ပထာွားပါတယ့်။

ာချင့်တာက 25၊

▪ Current ထွဲကို Root node ထည့်တယ့်။

▪ 60 ထက့် 25 ကငယ့်တယ့် Left child ကိုသာွားမယ့်။

▪ 50 ကိုရ ာက့်တယ့်။ 50 ထက့် 25 ကငယ့်တယ့်။ Left child ကိုသာွားမယ့်။

▪ 20 ကိုရ ာက့်တယ့်။ 20 ထက့် 25 ကတကြီွားတယ့်။ Right child ကိုသာွားမယ့်။

▪ 25 ကိုရ ာက့်တယ့်။ ညြီသာွားပပြီ ြစ့် ိုဲ့ အွဲဒြီ node ကို return ပန့် ိုက့်တယ့်။

60

50 70

0 0

20 55 90
NULL
0 0 0

10 25

0 0

အခို ပထာွားတာကရတာ tree ထွဲကရန 67 ကို ာချင့်တာ ြစ့်ပါတယ့်။

304 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

▪ Current ဟာ Root node ကရနစတယ့်။

▪ 67 ဆိုရတာ Current ရ ာက့်ရနတွဲ 60 ထက့်တကြီွားတယ့်၊ Right child ကိုသာွားမယ့်။

▪ 70 ကိုရ ာက့်တယ့်။ ာချင့်တွဲ 67 က 70 ထက့်ငယ့်ရတာ Left child ကိုသာွားမယ့်။

▪ 70 မာ Left child မ ရတာ Left child ရန ာ NULL ြစ့်ရနမယ့်။ ဒြီရတာ 70 ွဲှေ့ Left child

ကိုသာွားတွဲ Current ဟာ NULL နွဲဲ့ ညြီသာွားမယ့်။ မရတှေ့ရ ကာင့်ွား NULL ကို return

ပန့်ရပွား ိုက့်မယ့်။

လ ေ့ကျငေ့ကကညေ့ကကရလအောင။

1. 11, 17, 4, 34, 16, 8, 2, 40 အစဉ့် ိုက့်ဝင့် ာတာကို ဘယ့် ိုပိုစ


ံ ံထက့်မ ွဲ binary tree

ဆွဲ ကည့်ပါ။ Left child ဟာ parent ထက့်ငယ့် မယ့်၊ Right child ဟာ parent ထက့်တကြီွား မယ့်

ဆိုတာကို မရမပါနွဲ။ဲ့

2. ဆွဲပပြီွားသာွား tree ထွဲမ 2 ကို ာတာကို ပံဆ


ို ွဲပပြီွား trace ိုက့် ပပါ။

3. ဆွဲပပြီွားသာွား tree ထွဲမ 40 ကို ာတာကို ပံဆ


ို ွဲပပြီွား trace ိုက့် ပပါ။

4. ဆွဲပပြီွားသာွား tree ထွဲမ 45 ကို ာတာကို ပံဆ


ို ွဲပပြီွား trace ိုက့် ပပါ။

ဒြီရ ကျင့်ခန့်ွား ိုပ့်ပပြီွားမ ရအာက့်က ရခါင့်ွားစဉ့်ကို ဆက့်ြတ့်ပါ။ မပပြီွားပွဲ ဆက့်မြတ့်ပါနွဲ။ဲ့

Inserting a Node into Binary Tree

▪ Root ဟာ NULL နွဲဲ့ညရ


ြီ န င့် node တစ့်ခိုမ မ ရသွား ိုဲ့ အခိုဝင့် ာတွဲ newNode ဟာ Root

node ြစ့်မာ ြစ့်ပါတယ့်။

If Root == NULL then:

305 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Root = newNode

60 60
0 0

50 70 50 70
0 0 0 0

20 55 20 55
0 0 0 NULL
0
NULL
ပထမပံိုကရတာ 25 ထည့်ချင့်တာအတက့် ဆွဲ ပထာွားတာ ြစ့်ပါတယ့်။

▪ ထံိုွားစံအတင
ို ့်ွား Current ဟာ Root node ကရနပပြီွား စမယ့်။

▪ ထည့်ချင့်တာက 25 ဆိုရတာ Current ရ ာက့်ရနတွဲ 60 ထက့်ငယ့် ိုဲ့ Current ကို Left child ကို

ရ ှေ့မယ့်။

▪ 50 ရတှေ့တယ့်။ ရန ာမ တ့်ရသွားဘွား။ 25 ဟာ 50 ထက့်ငယ့်တယ့်။ ဒြီရတာ Current ကို Left

child ကို ရ ှေ့မယ့်။

▪ 20 ရတှေ့တယ့်။ ရန ာမ တ့်ရသွားဘွား။ 25 ဟာ 20 ထက့်တကြီွားတယ့်။ ဒြီရတာ Current ကို Right

child ကိုရ ှေ့မယ့်။

▪ Current ဟာ NULL ြစ့်သာတယ့်။ NULL ြစ့်သာွားတယ့် ဆိုတာ ရန ာ တ့်သာွားတာ။ အွဲဒြီရတာ

အွဲဒြီရန ာမာ ထည့် မာ ြစ့်ပါတယ့်။ Right child သာွား င့်ွား NULL နွဲဲ့ ြစ့်သာွားတာ ြစ့် ိုဲ့ NULL

မရ ာက့်ခင့် 20 node ွဲှေ့ Right child အရနနွဲဲ့ newNode(25) ကို ထည့် မာ ြစ့်ပါတယ့်။ သရ
ိုဲ့ သာ့်

Current ဟာ NULL ရ ာက့်မ NULL မရ ာက့်ခင့် သရနောက့်ဆံိုွားသာွားခွဲတွဲ 20 ကို ပန့်တက့် ိုဲ့

မ ပါဘွား။ ဒြီရတာ ထံိုွားစံအတင


ို ့်ွား Prev ဆိုတွဲ node တစ့်ခို ကိုထာွားမာ ြစ့်ပါတယ့်။ Current

ရနောက့်ရ ှေ့မယ့် ိုပ့်တိုင့်ွား Current မရ ှေ့ခင့် Current ရန ာကို Prev ကို ထာွားခွဲပါတယ့်။ ဒြီရတာမ

Current ွဲ NULL ရ ာက့်ရ ာ Prev က 20 node မာ ကျန့်ရနခွဲမာ ြစ့်ပါတယ့်။

306 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

ဒိုတယ ပံိုကရတာ 67 ထည့်မာအတက့် ဆွဲ ပထာွားပါတယ့်။

▪ ထံိုွားစံအတင
ို ့်ွား Current ဟာ Root node ကရနပပြီွား စမယ့်။

▪ ထည့်ချင့်တာက 67 ဆိုရတာ Current ရ ာက့်ရနတွဲ 60 ထက့်တကြီွား ိုဲ့ Current ကို Right child ကို

ရ ှေ့မယ့်။ Current ကို Right child မရ ှေ့ခင့် Prev ကို Current ရန ာ ထာွားခွဲပါမယ့်။ ဒြီရတာ Prev

ဟာ 60 မာကျန့်ရနခွဲပပြီွား Current က 70 ကိုရ ာက့်သာွားမယ့်။

▪ 70 ရတှေ့တယ့်။ ရန ာမ တ့်ရသွားဘွား။ 67 ဟာ 70 ထက့်ငယ့်တယ့်။ ဒြီရတာ Current ကို Left

child ကို ရ ှေ့မယ့်။ Current မရ ှေ့ခင့် Current ရန ာကို Prev ကို ရပွားခွဲမယ့်။ Prev ဟာ 70 မာ

ကျန့်ရနခွဲမယ့်။ Current ကို Left child ရ ှေ့ရတာ Current ဟာ NULL ြစ့်သာွားမယ့်။

▪ Current NULL ြစ့်သာွားတာဟာ ရန ာ တ့်တာ ြစ့်ပါတယ့်။ Left child သာွား င့်ွား NULL

ြစ့်တာရ ကာင့် Prev ွဲှေ့ Left child အရနနွဲဲ့ ထည့်မာ ြစ့်ပါတယ့်။

အချြိုပ့် ပန့်ရ ပာ င့် Current သည့် Root ကရနစမယ့်။ ရန ာ တ့်၊မ တ့်သ ရအာင့် Current ကို

NULL နွဲဲ့ ညြီတအထ


ွဲ ရ ှေ့မယ့်။ Current မရ ှေ့ခင့်မာ Current ရန ာကို Prev ကို ရပွားခွဲမယ့်။ Left child

ရ ှေ့ င့်ွား NULL နွဲဲ့ညသ


ြီ ာွား င့် newNode ကို Prev ွဲှေ့ Left child အရနနွဲဲ့ ထည့်မယ့်။ Right child

ကိုသာွား င့်ွား NULL နွဲဲ့ညတ


ြီ ာဆို င့် newNode ကို Prev ွဲှေ့ Right child အရနနွဲဲ့ ထည့်မယ့်။ ဒါရ ကာင့်

Left child ကို သာွားတာ ာွား၊ Right child ကိုသာွားတာ ာွားဆိုတာ မတ့်ထာွားြဲ့ို ိုတယ့်။ အွဲဒြီအတက့်

isLeftChild ဆိုတွဲ variable ကို အသံိုွား ပြိုပါမယ့်။ Left child ကိုသာွား င့် isLeftChild ထွဲ true ထည့်ပပြီွား

Right child ကိုသာွား င့် isLeftChild ထွဲ false ထညမ


့် ာ ြစ့်ပါတယ့်။

Insert ( newNode )

If Root == NULL then:

Root = newNode

Set Current = Root

307 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Set Prev = NULL

Set isLeftChild = true

Repeat while Current != NULL:

Prev = Current

If newNode → key < Current→ Key then:

Current = Current → LeftChild

isLeftChild = true

Else:

Current = Current → RightChild

isLeftChild =false

End of Loop

If isLeftChild then:

Prev → LeftChild = newNode

Else:

Prev → RightChild = newNode

Set isLeftChild = true ဆိုတွဲ စာရ ကာင့်ွားဟာ ဒြီ variable ကို အသံိုွား ပြိုမည့်အရ ကာင့်ွား သြဲ့သ
ို ာ

ြစ့်ပါတယ့်။ true ထည့်ထည့်၊ false ထည့်ထည့် အရ ွားမပါ ပါဘွား။ ဘာရ ကာင့် ွဲဆို င့်

အွဲဒြီတန့်ြိုွားရတဟာ while loop ထွဲမာ ရ ပာင့်ွားထည့် ိုက့်မာ ြစ့်တာရ ကာင့် ြစ့်ပါတယ့်။

လ ေ့ကျငေ့ကကညေ့ကကရလအောင။

Algorithm ကို trace ိုက့်ပပြီွား tree ထွဲကို 100, 15, 52 တဲ့က


ို ို ထည့်ပါ။

308 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

60

50 70

0 0

20 55 90

0 0 0

10 25

0 0

Traversing a Binary Tree

Traversing ဆိုတာရတာ linked list နွဲဲ့ တင့် သခွဲရ ာက့်ပါပပြီ။ Node အာွား ံိုွားကို

ရ ာက့်ရအာင့်သာွားတာ ြစ့်ပါတယ့်။ Tree မာရတာ သာွားတနည့်


ွဲ ွား ၃ နည့်ွား ပါတယ့်။

1. Pre-order (Root, L, R)

2. In-order (L, Root, R)

3. Post-order (L, R, Root) တဲ့ပ


ို ွဲ ြစ့်ပါတယ့်။

Pre ဆိုတာတကြိုတင့် ိုပတ


့် ွဲ အဓပပါယ့် ြစ့်တွဲအတက့် Root ကို ရ ှေ့ထာွား၊ ပပြီွားမ Left, Right ဆိုပပြီွား

သာွားမာ ြစ့်ပပြီွား၊ in ဆိုတာ အ ယ့် ဆိုတွဲ အဓပပါယ့် ြစ့်တာရ ကာင့် Left, Right ကာွားမာ Root ဆိုပပြီွား

(Left, Root, Right) သာွားမာ ြစ့်ပါတယ့်။ Post ကရတာ ရနောက့်ဆိုတွဲ အဓပပါယ့် ြစ့် ိုဲ့ Left, Right,

Root ဆိုပပြီွား သာွားပါမယ့်။ Root က ရနောက့်ဆံိုွား ိုပ့်မာ ြစ့်ပါတယ့်။

တစ့်ရယာက့် တရနဲ့တည့်ွား သာွားစ ာရန ာ သံိုွားရ ွားခို တယ့်ဆိုပါရတာ။ ဘယ့်ရန ာကို

အ င့်သာွားမ ွဲဆိုတာရတာ အွဲဒြီ ွဲှေ့ ဆံိုွား ြတ့်ချက့်ရပေါ်မတည့်ပါတယ့်။ ဒြီ ိုပွဲ ဒြီမာ ွဲ pre-order,

309 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

in-order, post-order ဆပို ပြီွား တွဲအထွဲက ိုအပ့်ချက့်ရပေါ်မာ မတည့်ပပြီွား ကိုယ့်တကြိုက့်တွဲ နည့်ွားနွဲဲ့

သာွား ိုဲ့ ပါတယ့်။

Pre-order Traversing

Pre-order ဆိုရတာ Root ကို အ င့် output ထိုတ့်ပါမယ့်။ ပပြီွားမာ Left child, Right Child

ာမာ ြစ့်ပါတယ့်။

60

50 70

0 0

20 55 90

0 0 0

10 25

0 0
ဒြီပိုက
ံ ို pre-order နွဲဲ့ output ထိုတ့် ကည့်ပါမယ့်။

60

50 70

0 0

20 55 90

0 0 0

10 25

0 0

310 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Root, Left, Right ဆိုရတာ Root ြစ့်တွဲ 60 ကို အ င့် output ထိုတ့် ိုက့်ပါမယ့်။ Root ပပြီွား င့် Left

ဆိုတွဲ အတက့် Left child 50 ကိုသာွားမာ ြစ့်ပါတယ့်။

60

50 70

0 0

20 55 90

0 0 0

10 25

0 0

50 ကို ပန့် ကည့် ိုက့်ရတာ တတဂံပံိုစံ ဝိုင့်ွား ပထာွားတွဲ subtree ရ ွား ွဲှေ့ Root ပန့် ြစ့်ရနတယ့်။ Root

အ င့် ိုပ့်မာဆိုတွဲအတက့် 50 ကို output ထိုတ့် ိုက့်တယ့်။ Root ပပြီွားရတာ Left ဆိုရတာ Left child

20 ကိုသာွားပါမယ့်။
60

50 70

0 0

20 55 90

0 0 0

10 25

0 0

မင့်တအတ
ွဲ င
ို ့်ွားပါပွဲ။ 20 ဟာ အခို ပထာွားတွဲ subtree ွဲှေ့ Root ြစ့်ရနတွဲအတက့် Root အ ြစ့် 20 ကို

အ င့်ထိုတ့် ိုက့်ပါမယ့်။ Root အရနနွဲဲ့ ထိုတ့်တာ ြစ့် ိုဲ့ Root ပပြီွား င့် Left 10 ကိုသာွားပါမယ့်။

311 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

60

50 70

0 0

20 55 90

0 0 0

10 25

0 0
10 ကို Root အရနနွဲဲ့ ထိုတ့် ိုက့်ပါတယ့်။ Root, Left, Right ဆိုရတာ Left child နွဲဲ့ Right child

ကို ကည့်ပါတယ့်။ 10 မာ Left child ရ ာ၊ Right child ပါ NULL ြစ့်ရန ိုဲ့ မ ိုဲ့

ဆက့်သာွားစ ာမ ိုပွဲ ပပြီွားသာွားပါတယ့်။ 20 node ကရန ကည့် ိုက့် င့် 20 Root ပပြီွားသာွားပပြီ၊ အခို Left

10 ပပြီွားသာွားပပြီ။ ဒြီရတာ Root, Left, Right မာ Root, Left ပပြီွားသာွားပပြီ ြစ့် ိုဲ့ Right 25

ကိုသာွားမာ ြစ့်ပါတယ့်။ ကွဲ ပာွားရအာင့် ရ ာက့်တွဲ node ကို border မတရအာင့်

ခယ့်ရပွားထာွားပါတယ့်။ 60

50 70

0 0

20 55 90
0 0 0

10 25

0 0

25 ကိုရ ာက့်တွဲ အချန့်မာ ွဲ 25 ကို Root အရနနွဲဲ့ အ ိုပ့် ိုပမ


့် ာ ြစ့်ပါတယ့်။ Root, Left, Right

ဆိုတွဲအတိုင့်ွား Left child, Right child ရတ ကည့်တယ့်။ သရ


ိုဲ့ သာ့် 25 က child တစ့်ရယာက့်မ မ ိုဲ့

312 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

ဆက့်မသာွား ရတာဘွား။ အခိုဆို င့် ထိုတ့် ပ ပိုဲ့ ပြီွားသာွားတွဲ တတဂံပံို ဝိုင့်ွား ပထာွားတာရ ွားကို ကည့်ပါ။

သတဟ
ိုဲ့ ာ 50 ွဲှေ့ Left child ရတ ြစ့်ပါတယ့်။ 50 ဆိုတွဲ Root ကို ထိုတ့်ပပြီွားသာွားပပြီ၊ ပပြီွားရတာ သ ွဲှေ့ Left

ကို ည့်ွား ထိုတ့်ပပြီွားသာွားပပြီ ြစ့် ိုဲ့ ဒြီတစ့်ခါ ဆက့်သာွား မာကရတာ 50 ွဲှေ့ Right child ြစ့်တွဲ 55

ြစ့်ပါတယ့်။ 60

50 70

0 0

20 55 90

0 0 0

10 25

0 0
55 ကို ည့်ွား Root node အရနနွဲဲ့ ထိုတ့်ပါတယ့်။ ပပြီွားရတာ သူ့ ွဲှေ့ Left child, Right child ရတကို

ကည့်ပါရသွားတယ့်။ ဒါရပမွဲ သမာ Left child ရ ာ၊ Right child ရ ာ မ ိုဲ့ ပ့်သာွားပါတယ့်။ တတဂံနွဲဲ့

ပထာွားတာကို ကည့် ိုက့် င့် 60 ဟာ Root အရနနွဲဲ့ ထိုတ့်ပပြီွားသာွားပပြီွား သူ့ ွဲှေ့ Left တစ့် ခမ့်ွား ံိုွား ည့်ွား

ထိုတ့်ပပြီွားသာွားပါပပြီ။ Root, Left ပပြီွားရတာ ဒြီတစ့်ခါ သာွား မာက Right ြစ့် ိုဲ့ 60 ွဲှေ့ Right child 70 ကို

သာွားပါမယ့်။
60

50 70

0 0

20 55 90

0 0 0

10 25

0 0
70 ကို Root node အရနနွဲဲ့ ထိုတ့်ပါတယ့်။ Root ပပြီွားရတာ Left ကိုသာွားမယ့်။ 70 မာ Left ကမ ရတာ

Left ပပြီွားသာွားပပြီ။ ဒြီရတာ 70 ွဲှေ့ Right ြစ့်တွဲ 90 ကိုသာွားမာ ြစ့်ပါတယ့်။

313 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

60

50 70

0 0

20 55 90

0 0 0

10 25

0 0
90 ကို Root node အရနနွဲဲ့ ထိုတ့်ပါတယ့်။ Root ပပြီွား ရတာ Left, Right ကို ကည့်တယ့်။ 90

မာ Left ရ ာ၊ Right ပါ မ ရတာတွဲအတက့် ပ့်သာွားတယ့်။ node အာွား ံိုွား သာွားပပြီွားသာွား ိုဲ့

ဆက့်သာွားစ ာမ ရတာပွဲ ပ့်သာွားပါတယ့်။ သာွားခွဲတွဲ အစဉ့် ိုက့်ကို ပန့်ရ ွား ပ င့်

60, 50, 20, 10, 25, 55, 70, 90

ြစ့်ပါတယ့်။ ဒြီရန ာမာ node တစ့်ခိုကို ရ ာက့် င့် Root အ ြစ့်ထိုတ့်၊ ပပြီွား င့် Left child သာွား၊

Left child ကို Root အ ြစ့် ိုပ၊့် ပပြီွားရတာ Root အ ြစ့် ိုပတ
့် ာရ ကာင့် Left child ဆက့်သာွား ဆိုပပြီွား

Left ရတ တန့်ွားစြီသာွားတာ။ Left ဘက့် အကိုန့်သာွားပပြီွားရတာ Right ဘက့်သာွား၊ Right

ဘက့်ရ ာက့်သာွားတွဲ node ကို ည့်ွား Root အ ြစ့် ပန့် ိုပ့်။ ဆိုရတာ Left, Right ရတဟာ Root

အ ြစ့် recursion ပန့်ရခေါ်သ ို ြစ့်ရနတယ့်။ ဒါရ ကာင့် pre-order algorithm ကို ရ ွားမယ့် ဆို င့်

preOrder(Node localRoot)

If localRoot != NULL then:

Write localRoot→Key, “ ,”

preOrder(localRoot → LeftChild)

preOrder(localRoot → RightChild)

314 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

In-order Traversing

In-order ဆို င့် Left, Root, Right ြစ့်တွဲအတက့်

inOrder(Node localRoot)

If localRoot != NULL then:

inOrder(localRoot → LeftChild)

Write localRoot→Key, “ ,”

inOrder(localRoot → RightChild)

Post-order Traversing

Post-order ဆို င့် Left, Right, Root ြစ့်တွဲအတက့်

postOrder(Node localRoot)

If localRoot != NULL then:

postOrder(localRoot → LeftChild)

postOrder(localRoot → RightChild)

Write localRoot→Key, “ ,”

Pre-order အတက့် တက့် ပခွဲတွဲ ပံက


ို ို post-order အတက့် trace ိုက့် ပပါမယ့်။ Post order

ဆိုရတာ Left, Right, Root ကို ရခါင့်ွားထွဲ ထည့်ထာွားပါ။

315 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

60

50 70

0 0

20 55 90

0 0 0

10 25

0 0
Root node ြစ့်တွဲ 60 ကရနစမယ့်။ Left, Right, Root ဆိုတွဲအတက့် Root ကရနောက့်ဆံိုွားမ

အ ိုပ့် ိုပ့် မာ ြစ့် ိုဲ့ Left ကိုသာွားတယ့်။

50 ကိုရ ာက့်တယ့်၊ 50 ဟာ Root ြစ့်ရတာ Left ကို ဆက့်သာွားတယ့်။

20 ကိုရ ာက့်တယ့်၊ 20 ဟာ Root ြစ့်ရတာ Left ကို ဆက့်သာွားတယ့်။

10 ကိုရ ာက့်တယ့်၊ 10 ဟာ Root ြစ့်ရတာ Left ကို ဆက့်သာွားတယ့်။

Left က NULL ြစ့်ရနရတာ Left မ ရတာ ိုဲ့ Left ပပြီွားပပြီ ြစ့်တယ့်။ ဒြီရတာ 10 ွဲှေ့ Right ကိုသာွားတယ့်။

Right မ ရတာ Right ည့်ွားပပြီွားသာွားပပြီ။ Left, Right , Root ဆိုရတာ Left, Right ပပြီွားသာွား ိုဲ့ 10 ကို

Root အရနနွဲဲ့ ထိုတ့် ိုက့်တယ့်။

10 ဆိုတာဟာ 20 ွဲှေ့ Left ြစ့်တယ့်။ 20 ွဲှေ့ Left ပပြီွားရတာ 20 ွဲှေ့ Right ကိုသာွားတယ့်။ 25

ကိုရ ာက့်တယ့်။ 25 ကို Root node အ ြစ့် ကည့်တယ့်။ Root ဆိုရတာ Left, Right ကို

အ င့်သာွား မယ့်။ 25 မာ Left, Right မ ရတာ ပပြီွားပပြီ ိုဲ့ ယဆပပြီွား 25 ကို Root အရနနွဲဲ့

ထိုတ့် ိုက့်တယ့်။

316 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

60

50 70

0 0

20 55 90

0 0 0

10 25

0 0
20 ကရန ကည့် ိုက့် င့် သူ့ ွဲှေ့ Left 10, သူ့ ွဲှေ့ Right 25 အ ိုပ့် ိုပ့် ိုဲ့ ပပြီွားသာွားပပြီ။ Left, Right ပပြီွားရတာ

20 ကို Root အရနနွဲဲ့ ထိုတ့် ိုက့်တယ့်။ တတဂံနွဲဲ့ ပထာွားသ ိုပွဲ 50 ကရန ကည့် ိုက့် င့် သူ့ ွဲှေ့ Left

ဘက့် ခမ့်ွား ပပြီွားသာွားပပြီ။ Left ပပြီွားရတာ Right ြစ့်တွဲ 55 ကိုသာွားမယ့်။

60
0

50 70

0 0

20 55 90

0 0 0

10 25

0 0
55 ကို Root အ ြစ့် ကည့်တယ့်။ Left, Right, Root ြစ့် ိုဲ့ 55 ွဲှေ့ Left, Right ကိုသာွားတယ့်။

မ ရတာမ Left, Right ပပြီွားပပြီ ြစ့် ိုဲ့ 55 ကို Root အ ြစ့်ထိုတ့် ိုက့်တယ့်။

55 ထိုတ့် ည့်ွားပပြီွားရ ာ 50 ဟာ သူ့ ွဲှေ့ Left, Right ပပြီွားသာွားပပြီ ြစ့် ိုဲ့ 50 ကို Root အ ြစ့်ထိုတ့်တယ့်။ 50

ည့်ွား ထိုတ့်ပပြီွားသာွားရတာ 60 ကရန ကည့် ိုက့် င့် သူ့ ွဲှေ့ Left ဘက့် ခမ့်ွားပပြီွားသာွားပပြီ ြစ့်ပါတယ့်။

ဒြီရတာ Right ြစ့်တွဲ 70 ကိုသာွားမာ ြစ့်ပါတယ့်။

317 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

60

50 70

0 0

20 55 90

0 0 0

10 25

0 0
60

50 70

0 0

20 55 90

0 0 0

10 25

0 0
ထံိုွားစံအတင
ို ့်ွား 70 ကို Root အ ြစ့် ကည့်မယ့်။ Left, Right, Root ဆိုရတာ 70 ွဲှေ့ Left ကိုသာွားတယ့်။

Left မ ရတာ Left ပပြီွားပပြီ ြစ့် ိုဲ့ 70 ွဲှေ့ Right ကိုသာွားတယ့်။ 90 ကိုရ ာက့်တယ့်။ 90 ကို Root အ ြစ့်

ကည့်မယ့်။ 90 ွဲှေ့ Left, Right ကို အ င့်သာွားတယ့်။ မ ရတာ ိုဲ့ Left, Right ပပြီွားမ 90 ကို Root

အ ြစ့်ထိုတ့်တယ့်။ 90 ပပြီွားတာ 70 ွဲှေ့ Left, Right ပပြီွားသာွား ိုဲ့ 70 ကို Root အ ြစ့်ထိုတ့် ိုက့်တယ့်။ 70

ည့်ွား ထိုတ့်ပပြီွားသာွားရတာ 60 ဟာ Left ဘက့် ခမ့်ွားရ ာ၊ Right ဘက့် ခမ့်ွားပါ ပပြီွားသာွားပပြီ ြစ့် ိုဲ့ 60 ကို

Root အ ြစ့်ရနောက့်ဆံိုွားထိုတ့် ိုက့်တယ့်။ node အာွား ံိုွားကို သာွားပပြီွားပပြီ ြစ့် ိုဲ့ ပပြီွားသာွားပပြီ ြစ့်ပါတယ့်။

10,25, 20, 55, 50, 90, 70, 60

ဆိုပပြီွား အရ ြထက့်ပါတယ့်။

318 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

လ ေ့ကျငေ့ကကညေ့ကကရလအောင။

60

44 88

22 55 99
77
0

11 33
66

1. Pre-order ြင့် output ထိုတ့် ပပါ။

2. In-order ြင့် output ထိုတ့် ပပါ။

3. Post-order ြင့် output ထိုတ့် ပပါ။

Heap

Data ရတကို tree ပံစ


ို ံနွဲဲ့ သမ့်ွားြဲ့ို Left child နွဲဲ့ Right child နစ့်ခို တွဲ heap ပံစ
ို ံမျြိုွားနွဲဲ့ ည့်ွား

သမ့်ွားပါတယ့်။ Heap ကို နစ့်မျြိုွားထပ့်ခွဲပါတယ့်။ Max-heap နွဲဲ့ Min-heap ြစ့်ပါတယ့်။

Max-heap - parent node ဟာ child ရတထက့် တကြီွားတာ သမ


ိုဲ့ ဟိုတ့် ညြီတာ ြစ့် ပါမယ့်။

Min-heap –parent node ဟာ child ရတထက့် ငယ့်တာ သမ


ိုဲ့ ဟိုတ့် ညြီတာ ြစ့် ပါမယ့်။

LA = { 35, 33, 42, 10, 14, 19, 27, 44, 26, 31 }

Insert 35 35

319 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Insert 33: 33 ဝင့် ာရတာ 35 ွဲှေ့ ရအာက့်မာ တ့်တွဲ Left child အရနနွဲဲ့ ထည့်မာ ြစ့်ပါတယ့်။

ပပြီွားရတာ သူ့ ွဲှေ့ parent 35 ထက့်ငယ့်ရတာ ဘာမ ိုပ့်စ ာမ ိုပါဘွား။

35

33

Insert 42: 42 ဝင့် ာရတာ 35 ွဲှေ့ ရအာက့်မာ တ့်ရနတွဲ Right child အရနနွဲဲ့ ထည့်မာ ြစ့်ပါတယ့်။

35 42

33 42 33 35

42 ကိုထည့် ိုက့်ရတာ parent ြစ့်တွဲ 35 ထက့်တကြီွားရန ိုဲ့ 42 နွဲဲ့ 35 ရန ာချင့်ွား ွဲ ိုက့်တယ့်။

အခိုဆို င့် parent 42 ဟာ child 2 ခို ံိုွားထက့်တကြီွားသာွား ိုဲ့ အဆင့်ရ ပသာွားပါပပြီ။

Insert 10: 10 ဝင့် ာရတာ 33 ွဲှေ့ ရအာက့်မာ တ့်ရနတွဲ Left child အရနနွဲဲ့ ထည့်မာ ြစ့်ပါတယ့်။

parent ထက့်ငယ့်ရနရတာ ဘာမ ိုပ့်စ ာမ ိုပါဘွား။

42

33 35

10

320 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Insert 14: 14 ဝင့် ာရတာ 33 ွဲှေ့ ရအာက့်မာ တ့်ရနတွဲ Right child အရနနွဲဲ့ ထည့်မာ ြစ့်ပါတယ့်။

parent ထက့်ငယ့်ရနရတာ ဘာမ ိုပ့်စ ာမ ိုပါဘွား။

42

33 35

10 14

Insert 19: 19 ဝင့် ာရတာ 35 ွဲှေ့ ရအာက့်မာ တ့်ရနတွဲ Left child အရနနွဲဲ့ ထည့်မာ ြစ့်ပါတယ့်။

parent ထက့်ငယ့်ရနရတာ ဘာမ ိုပ့်စ ာမ ိုပါဘွား။

42

33 35

10 14 19

Insert 27: 27 ဝင့် ာရတာ 35 ွဲှေ့ ရအာက့်မာ တ့်ရနတွဲ Right child အရနနွဲဲ့ ထည့်မာ ြစ့်ပါတယ့်။

parent ထက့်ငယ့်ရနရတာ ဘာမ ိုပ့်စ ာမ ိုပါဘွား။

42

33 35

10 14 19 27

321 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Insert 44: 44 ဝင့် ာရတာ 10 ွဲှေ့ ရအာက့်မာ တ့်ရနတွဲ Left child အရနနွဲဲ့ ထည့်မာ ြစ့်ပါတယ့်။

42 42

33 35 33 35

10 14 19 27 44 14 19 27

44 က parent 10 ထက့်တကြီွား ိုဲ့ ွဲမယ့်။ 44 က parent 33 ထက့်တကြီွား ိုဲ့ ွဲမယ့်။


44 10

42
44

44 35
42 35

33 14 19 27
33 14 19 27

44 က parent 42 ထက့်တကြီွား ိုဲ့ မ


ွဲ ယ့်။
10 အဆင့်ရ ပသာွားပါပပြီ။
10

Insert 26: 26 ဝင့် ာရတာ 33 ွဲှေ့ ရအာက့်မာ တ့်ရနတွဲ Right child အရနနွဲဲ့ ထည့်မာ ြစ့်ပါတယ့်။

parent ထက့်ငယ့်ရနရတာ ဘာမ ိုပ့်စ ာမ ိုပါဘွား။

322 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

44

42 35

33 14 19 27

10 26

Insert 31: 31 ဝင့် ာရတာ 14 ွဲှေ့ ရအာက့်မာ တ့်ရနတွဲ Left child အရနနွဲဲ့ ထည့်မာ ြစ့်ပါတယ့်။

parent ထက့်တကြီွားရန ိုဲ့ parent နွဲဲ့ ရန ာချင့်ွား ွဲ။

44

42 35
44

33 19 27 42 35
14

33 31 19 27
10 26 31

10 26 14

ဒြီမာက parent ကို child ရတထက့်တကြီွားတာထာွား ိုဲ့ Max- heap ြစ့်ပါတယ့်။

Min-heap နွဲဲ့ ပန့်ပပြီွား ရ ကျင့် ကည့်ပါ။

323 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Heap Sort

Heap Sort ွဲှေ့ အ ိုပ့် ိုပပ


့် က
ံို ရတာ Root node ကို ြယ့်ြယ့်သာွားမာ ြစ့်ပပြီ၊ ရနောက့်ဆံိုွား node က

Root ရန ာတက့် ာ ပါမယ့်။ ပပြီွားမ parent က တကြီွား မယ့် သမ


ိုဲ့ ဟိုတ့် ညြီ မယ့် ဆိုတွဲ စည့်ွားကမ့်ွားနွဲဲ့

ကိုက့်ရအာင့် ပန့်စြီမာ ြစ့်ပါတယ့်။

50

30 40

10 20

Remove Root node: 50

20
50

30 40
30 40

Root node ြယ့်ရတာ


10 Root ရန ာ ရနောက့်ဆံိုွား
10 20
node တက့်

40

30 20

20 parent နွဲဲ့ တကြီွားတွဲ child Sorted : 50


10 40 ရန ာချင့်ွား ွဲ။

324 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Remove Root node: 40 ရန ာ ရနောက့်ဆံိုွား node 10 တက့်မယ့်။

10 30

30 20 10 20

10 parent နွဲဲ့ တကြီွားတွဲ child


30 ရန ာချင့်ွား ွဲမယ့်။
Sorted: 40, 50

Remove Root node: 30 ရန ာ ရနောက့်ဆံိုွား node 20 တက့်မယ့်။ parent တကြီွားရတာ ဘာမ

ိုပ့်စ ာမ ိုဘွား။ 20

10

Sorted: 30, 40, 50

Remove Root node: 20 ရန ာ ရနောက့်ဆံိုွား node 10 တက့်မယ့်။

10

Sorted: 20, 30, 40, 50

Node တစ့်ခိုတည့်ွားကျန့်တာရ ကာင့် ပပြီွားသာွားပါပပြီ။

Sorted: 10, 20, 30, 40, 50

လ ေ့ကျငေ့ကကညေ့ကကရလအောင။
LA = { 35, 33, 42, 10, 14, 19, 27, 44, 26, 31 } ကို Min-Heap ပံစ
ို ံ ြင့်သမ့်ွားပါ။ ပပြီွား ျှင့် heap

sort ကို သံိုွားပပြီွား sorting စြီရပွားပါ။

325 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

အခန်း (၁၇)

Graph

Graph ဆိုတာဘာလဲ။

လေလ ကြောင််းခရ်းစဉ်လ ွေကို graph ရဲ့ နမူနာ စ်ခိုအလနနဲ့ ကည်ေိုက် ကရလအြောင်။

M Y

N S

M – Mandalay, Y – Yangon, N – Nyaung U, H – He Hoe, S – Sittwe

ဒမြော အဝိုင််းလေ်းလ ွေနဲ့ ပြထြော်း မမ ဲ့အမည်လ ွေကို vertex ေိုဲ့လခေါ်မြ်း vertex လ ွေအ ကြော်း

ဆက်ထြော်း ေိုင််းလ ွေကို edge ေိုဲ့လခေါ်ြါ ယ်။

Edge လ ွေကို ကည်ပခင််းအြော်းပြင် Mandalay ကလန Yangon, He Hoe, Nyang U စ

မမ ဲ့လ ွေကို သွေြော်းေိုဲ့ရ ယ်။ Yangon ကလန Mandalay, He Hoe, Nyaung U, Sittwe စ မမ ဲ့လ ွေကို

သွေြော်းေိုဲ့ရ ယ်။ He Hoe ကလန Mandalay နင် Yangon၊ Nyanung U ကလနေည််း Mandalay နင်

Yangon၊ Sittwe ကလန Yangon စ ခရ်းစဉ်လ ွေရ ြော သနိုင်ြါ ယ်။

ဒမြော edge လ ွေက arrow မြါေိုဲ့ နစ်ြက်အပြန်အေန်သွေြော်းေိုဲ့ ရ သလ ြောပြစ်ြါ ယ်။

အဒါကို undirected graph ေိုဲ့ လခေါ်ြါ ယ်။ arrow ြါခရင်လ ြော directed graph ေိုဲ့ လခေါ်ြါ ယ်။

Directed Graph ကို နမူနာပြရရင်လ ြော

326 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

A D

C
ဒမြောဆိုရင် A ကလန B,C, D ကိုသွေြော်းေိုဲ့ရမယ်။ B, C ကလန ယ်မ သွေြော်းမရ ူ်း။ D ကလန B, C ကို

သွေြော်းေိုဲ့ရ ယ်။ Graph လ ွေကိုေည််း traversing ေိုြ်လ ြောမယ်ဆိုရင် သွေြော်း နည််း ၂

နည််းရြါ ယ်။

1. Depth-First Search

2. Breadth-First Search ိုဲ့ ပြစ်ြါ ယ်။

Adjacency Matrix

Graph ကို ပမင်သြောလအြောင် Adjacency Matrix နဲ့ ပြလြ်းေိုဲ့ရြါ ယ်။ အလြေါ်မြော နမူနာပြခ

လေလ ကြောင််းခရ်းစဉ် Undirected Graph အ ွေက် Adjacency Matrix ဆွေ ကည်ြါမယ်။ ရသမျှ vertex

လ ွေအြော်းေို်းကို row နဲ့ column မြော လခါင််းစဉ်လ ွေ အလနနဲ့ ချလရ်းြါ။ မြ်းရင် ြမ


ို ြော ခရ်းစဉ်ရရင် 1၊ မရရင်

0 ဆိုမြ်း ပြည်ရမြောပြစ်ြါ ယ်။ HH, MM စ မမကိုယမ


် မ ပြန်ညန
ွှ ််း လနရြောလ ွေကလ ြော

ကိုယ်မမ ဲ့ကိုယပ် ြန်သွေြော်း ြော မရေိုဲ့ 0 ပြစ်ြါ ယ်။ စ်ချ ဲ့ ရြော်းရြော်းြါ်းြါ်းလနရြောလ ွေမြောလ ြော

မမကိုယက
် ိုပြန်ညန
ွေ ််း edge လ ွေ ြါ ်ြါ ယ်။

H M N S Y

H 0 1 0 0 1

M 1 0 1 0 1

N 0 1 0 0 1

327 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

S 0 0 0 0 1

Y 1 1 1 1 0

လအြောက်က table ကလ ြော အလြေါ်မြောပြခ directed Graph အ ွေက် Adjacency Matrix ပြစ်ြါ

ယ်။

A B C D

A 0 1 1 1

B 0 0 0 0

C 0 0 0 0

D 0 1 1 0

Adjacency List

Graph ကို ပမင်သြောလအြောင် Adjacency List နဲ့ ေည််း ပြလြ်းေိုဲ့ရြါ ယ်။ အလြေါ်မြော ပြခ

Undirected Graph အ ွေက် အရင်ဆွေြါမယ်။

Vertex

H M→Y

M H→N→Y

N M→Y

S Y

Y H→M→N→S

နာ်းေည်ေွေယ် ြောလ ကြောင် ရင််းပြစရြော မေိုလေြောက် ူ်း ထင်ြါ ယ်။ အလြေါ်မြော ပြခ directed

Graph အ ွေက် ဆက်ဆွေြါမယ်။

Vertex

A B → C →D

328 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

D B→C

Depth-First Search (DFS)

Depth ဆို အ ိုင််း အဆို်းအထ သွေြော်းမြ်းမ ပြန်ေြောမြော ပြစ်ြါ ယ်။

B F G

C H
A

E I J

Depth-First Search နဲ့ ဒဟြောကို ထို ်ရင်

A, B, F, G ဆိုမြ်း အရင်ထို ်မယ်။

G မြ်းလ ြော ဆက်သွေြော်းစရြော ရေြော်း ကည် ယ်။ မရလ ြော လရဲ့ပြန်ေြော ယ်။ F လရြောက် ယ်။

F ကလန ဆက်သွေြော်းစရြောရေြော်း ကည်လ ြော ရ ယ်။ H ကိုဆက်သွေြော်း ယ်။ H ကလန ဆက်သွေြော်းစရြော

ရေြော်း ကည်လ ြောမရလ ြော ူ်း။ ဒလ ြော လရဲ့ပြန်ေြော ယ်။

အခိုလပြြောသလေြောက် ကည်ရင်ကို သသြောလနမြ၊ လနာက်ဆို်းသွေြော်းခ လနရြောကလန ဆက်ဆက်မြ်း

သွေြော်းနိုင်သမျှ အနက်ဆို်းထ သွေြော်း ယ်။ ဒလ ြော လနာက်ဆို်းသွေြော်းခ ြောကို အရင်ဆို်းေိုြ် ြောပြစ်ေိုဲ့

Stack ကို သို်းြါမယ်။

329 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Process Stack ရှင်းလင်းချက

Visit A A Visit ြောနဲ့ stack လြေါ် င် ယ်။ A ကလနဆက်မြ်း

သွေြော်းမယ်။

Visit B A, B Visit ြောနဲ့ stack လြေါ် င် ယ်။ လနာက်ဆို်း င်ခ B

ကလန ဆက်မြ်းသွေြော်းမယ်။

Visit F A, B, F Visit ြောနဲ့ stack လြေါ် င် ယ်။ လနာက်ဆို်း င်ခ F

ကလန ဆက်မြ်းသွေြော်းမယ်။

Visit G A, B, F, G Visit ြောနဲ့ stack လြေါ် င် ယ်။ လနာက်ဆို်း င်ခ G

ကလန ဆက်မြ်းသွေြော်းမယ်။

Pop A, B, F သလ
ိုဲ့ သြော် G မြော ဆက်သွေြော်းစရြောမရလ ြော ူ်း။ ဒါလ ကြောင် G ကို

ပြ ် ယ်။ Stack လြေါ်မြော လနာက်ဆို်း F ပြစ်လနေိုဲ့ F ကလန

ဆက်မြ်းသွေြော်းြါမယ်။

Visit H A, B, F, H Visit ြောနဲ့ stack လြေါ် င် ယ်။ လနာက်ဆို်း င်ခ H

ကလန ဆက်မြ်းသွေြော်းမယ်။

Pop A, B, F သလ
ိုဲ့ သြော် H မြော ဆက်သွေြော်းစရြောမရလ ြော ူ်း။ ဒါလ ကြောင် H ကို

ပြ ် ယ်။ Stack လြေါ်မြော လနာက်ဆို်း F ပြစ်လနေိုဲ့ F ကလန

ဆက်မြ်းသွေြော်းြါမယ်။

Pop A, B သလ
ိုဲ့ သြော် F မြော သွေြော်းစရြော အကိုန်သွေြော်းမြ်း သွေြော်းမြ။ ဒလ ြော

ဆက်သွေြော်းစရြောမရလ ြော ူ်း။ ဒါလ ကြောင် F ကို ပြ ် ယ်။

Stack လြေါ်မြော လနာက်ဆို်း B ပြစ်လနေိုဲ့ B ကလန

ဆက်မြ်းသွေြော်းြါမယ်။

330 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Pop A သလ
ိုဲ့ သြော် B မြော သွေြော်းစရြော အကိုန်သွေြော်းမြ်း သွေြော်းမြ။ ဒလ ြော

ဆက်သွေြော်းစရြောမရလ ြော ူ်း။ ဒါလ ကြောင် pop ေိုြ်ေိုက်

ယ်။ Stack လြေါ်မြော လနာက်ဆို်း A ပြစ်လနေိုဲ့ A ကလန

ဆက်မြ်းသွေြော်းြါမယ်။

Visit C A, C Visit ြောနဲ့ stack လြေါ် င် ယ်။ C ကလနဆက်မြ်း

သွေြော်းမယ်။

Pop A သလ
ိုဲ့ သြော် C မြော ဆက်သွေြော်းစရြောမရလ ြော ူ်း။ ဒါလ ကြောင် pop

ေိုြ်ေိုက် ယ်။ Stack လြေါ်မြော လနာက်ဆို်း A ပြစ်လနေိုဲ့ A

ကလန ဆက်မြ်းသွေြော်းြါမယ်။

Visit D A, D Visit ြောနဲ့ stack လြေါ် င် ယ်။ D ကလနဆက်မြ်း

သွေြော်းမယ်။

Pop A သလ
ိုဲ့ သြော် D မြော ဆက်သွေြော်းစရြောမရလ ြော ူ်း။ ဒါလ ကြောင် pop

ေိုြ်ေိုက် ယ်။ Stack လြေါ်မြော လနာက်ဆို်း A ပြစ်လနေိုဲ့ A

ကလန ဆက်မြ်းသွေြော်းြါမယ်။

Visit E A, E Visit ြောနဲ့ stack လြေါ် င် ယ်။ E ကလနဆက်မြ်း

သွေြော်းမယ်။

Visit I A, E, I Visit ြောနဲ့ stack လြေါ် င် ယ်။ I ကလနဆက်မြ်း

သွေြော်းမယ်။

Visit J A, E, I, J Visit ြောနဲ့ stack လြေါ် င် ယ်။ J ကလနဆက်မြ်း

သွေြော်းမယ်။

331 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Pop A, E, I သလ
ိုဲ့ သြော် J မြော ဆက်သွေြော်းစရြောမရလ ြော ူ်း။ ဒါလ ကြောင် pop

ေိုြ်ေိုက် ယ်။ Stack လြေါ်မြော လနာက်ဆို်း I ပြစ်လနေိုဲ့ I

ကလန ဆက်မြ်းသွေြော်းြါမယ်။

Pop A, E သလ
ိုဲ့ သြော် I မြော ဆက်သွေြော်းစရြောမရလ ြော ူ်း။ ဒါလ ကြောင် pop

ေိုြ်ေိုက် ယ်။ Stack လြေါ်မြော လနာက်ဆို်း E ပြစ်လနေိုဲ့ E

ကလန ဆက်မြ်းသွေြော်းြါမယ်။

Pop A သလ
ိုဲ့ သြော် E မြော ဆက်သွေြော်းစရြောမရလ ြော ူ်း။ ဒါလ ကြောင် pop

ေိုြ်ေိုက် ယ်။ Stack လြေါ်မြော လနာက်ဆို်း A ပြစ်လနေိုဲ့ A

ကလန ဆက်မြ်းသွေြော်းြါမယ်။

Pop သလ
ိုဲ့ သြော် A မြော ဆက်သွေြော်းစရြောမရလ ြော ူ်း။ ဒါလ ကြောင် pop

ေိုြ်ေိုက် ယ်။ Stack ဟြော empty ပြစ်သွေြော်းေိုဲ့

အြော်းေို်းကို DFS နဲ့ သွေြော်းခမြ်း ပြစ်သွေြော်းြါမြ။

A, B, F, G, H, C, D, E, I, J ဆိုမြ်းသွေြော်းခ ြော ပြစ်ြါ ယ်။ ဒလေြောက်ဆိုရင် Stack ကိုသို်းမြ်း Depth-

First Search(DFS) ရဲ့ အေိုြ်ေိုြြ


် က
ို ို သလေြောက်ြါမြ။

Breadth-First Search (BFS)

Breadth-First Search (BFS) ကလ ြော Depth-First Search(DFS) နဲ့ လပြြောင််းပြန် ပြစ်ြါ ယ်။ သူက

အရင်လရြောက် ဲ့‌ vertex နဲ့ ဆက်စြ် ြောလ ွေကို အရင်သွေြော်းမြော ပြစ်ေိုဲ့ Queue ကို အသို်းပြ ရမြော

ပြစ်ြါ ယ်။ DFS မြော နမူနာပြခ graph ကို BFS နဲ့ အေိုြ်ေိုြ် ကည်ြါမယ်။

332 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

Process Queue ရှင်းလင်းချက

Visit A A ပြင်ဆက်စြ် ြော အကိုန်သွေြော်းြါမယ်။ ေက်ရ A နဲ့

ဆက်စြ် ြော သွေြော်းလနေိုဲ့ A ကို မသမ််းြါ ူ်း။

Visit B B ေက်ရ A နဲ့ ဆက်စြ် ြောလ ွေကို သွေြော်းလန ြောပြစ်ေိုဲ့ B ကို

Queue လြေါ်ခဏ သမ််းထြော်းေိုက်ြါ ယ်။

Visit C B, C ေက်ရ A နဲ့ ဆက်စြ် ြောလ ွေကို သွေြော်းလန ြောပြစ်ေိုဲ့ C ကို

Queue လြေါ်ခဏ သမ််းထြော်းေိုက်ြါ ယ်။

Visit D B, C, D ေက်ရ A နဲ့ ဆက်စြ် ြောလ ွေကို သွေြော်းလန ြောပြစ်ေိုဲ့ D ကို

Queue လြေါ်ခဏ သမ််းထြော်းေိုက်ြါ ယ်။

Visit E B, C, D, E ေက်ရ A နဲ့ ဆက်စြ် ြောလ ွေကို သွေြော်းလန ြောပြစ်ေိုဲ့ E ကို

Queue လြေါ်ခဏ သမ််းထြော်းေိုက်ြါ ယ်။ အခိုဆိုရင် A နဲ့

ဆက်စြ်မြ်း မသွေြော်းရလသ်း ြော ကိုန်သွေြော်းမြပြစ်ေိုဲ့ A မြ်းရင်

အရင်ဆို်းသွေြော်းခ B ကလနဆက်သွေြော်းြါမယ်။ ဒါလ ကြောင်

လရဲ့ဆို်း B ကို ြျက်ချင်လ ြော Queue ကလန Delete

ေိုက်ြါမယ်။

Delete C, D, E အခိုဆိုရင် ပြ ်ေိုက် B နဲ့ ဆက်စြ် ြောကို

ဆက်သွေြော်းမြော ပြစ်ြါ ယ်။

Visit F C, D, E, F B နဲ့ ဆက်စြ် ြော ကိုန်မြပြစ်ေိုဲ့ လနာက် စ်ခို ထြ်မြ်း

Delete ြါမယ်။

Delete D, E, F အခိုဆိုရင် ပြ ်ေိုက် C နဲ့ ဆက်စြ် ြောကို

ဆက်သွေြော်းမြော ပြစ်ြါ ယ်။ C နဲ့ ဆက်စြ်မြ်း

333 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

မသွေြော်းရလသ်း ြော မရလ ြောေိုဲ့ လနာက် စ်ခို ထြ်မြ်း

Delete ြါမယ်။

Delete E, F အခိုဆိုရင် ပြ ်ေိုက် D နဲ့ ဆက်စြ် ြောကို

ဆက်သွေြော်းမြော ပြစ်ြါ ယ်။ D နဲ့ ဆက်စြ်မြ်း

မသွေြော်းရလသ်း ြော မရလ ြောေိုဲ့ လနာက် စ်ခို ထြ်မြ်း

Delete ြါမယ်။

Delete F အခိုဆိုရင် ပြ ်ေိုက် E နဲ့ ဆက်စြ် ြောကို

ဆက်သွေြော်းမြော ပြစ်ြါ ယ်။

Visit I F, I E နဲ့ ဆက်စြ်မြ်း မသွေြော်းရလသ်း ြော ကိုန်မြပြစ်ေိုဲ့

လနာက် စ်ခို ထြ်မြ်း Delete ြါမယ်။

Delete I အခိုဆိုရင် ပြ ်ေိုက် F နဲ့ ဆက်စြ် ြောကို

ဆက်သွေြော်းမြော ပြစ်ြါ ယ်။

Visit G I, G

Visit H I, G, H F နဲ့ ဆက်စြ်မြ်း မသွေြော်းရလသ်း ြော ကိုန်မြပြစ်ေိုဲ့

လနာက် စ်ခို ထြ်မြ်း Delete ြါမယ်။

Delete G, H အခိုဆိုရင် ပြ ်ေိုက် I နဲ့ ဆက်စြ် ြောကို

ဆက်သွေြော်းမြော ပြစ်ြါ ယ်။

Visit J G, H, J I နဲ့ ဆက်စြ်မြ်း မသွေြော်းရလသ်း ြော ကိုန်မြပြစ်ေိုဲ့

လနာက် စ်ခို ထြ်မြ်း Delete ြါမယ်။

Delete H, J အခိုဆိုရင် ပြ ်ေိုက် G နဲ့ ဆက်စြ် ြောကို

ဆက်သွေြော်းမြော ပြစ်ြါ ယ်။ G နဲ့ ဆက်စြ်မြ်း

334 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

မသွေြော်းရလသ်း ြော ကိုန်မြပြစ်ေိုဲ့ လနာက် စ်ခို ထြ်မြ်း

Delete ြါမယ်။

Delete J အခိုဆိုရင် ပြ ်ေိုက် H နဲ့ ဆက်စြ် ြောကို

ဆက်သွေြော်းမြော ပြစ်ြါ ယ်။ H နဲ့ ဆက်စြ်မြ်း

မသွေြော်းရလသ်း ြော ကိုန်မြပြစ်ေိုဲ့ လနာက် စ်ခို ထြ်မြ်း

Delete ြါမယ်။

Delete Queue empty ပြစ်သွေြော်းမြပြစ် ြောလ ကြောင် အကိုန်သွေြော်းေိုဲ့

မြ်းသွေြော်းမြ ပြစ်ြါ ယ်။

A, B, C, D, E, F, I, G, H, J ဆိုမြ်းသွေြော်းခ ြောပြစ်ြါ ယ်။

လလေ့ကျငေ့ကကညေ့ကကရလအာင။

K
B F
L

C G
A
H
D

E J M

335 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

M Y

N S

အလြေါ်က စ်ြိုချင််းစအ ွေက်

1. DFS ပြင် visit ေိုြ်ေရ


ိုဲ့ အစဉ်ေိုက်ကို ထို ်ပြလြ်းြါ။

2. BFS ပြင် visit ေိုြ်ေရ


ိုဲ့ အစဉ်ေိုက်ကို ထို ်ပြလြ်းြါ။

Chapter အနှစချျုပ

▪ Robot စ်ခိုက လနရြော စ်ခိုကလန goal ကို လရြောက်လအြောင်သွေြော်းရမယ်။ အဒေိုသွေြော်း အခါ

အခန််းလ ွေ အမျြော်းကက်းကို ပြ ်မြ်းသွေြော်းရမယ်။ အဒမြော အခန််းလေ်းလ ွေဟြော ြောနဲ့ ူသေ

ဆိုရင် vertex နဲ့ ူြါ ယ်။ စ အခန််းကလန ဆက်စြ်လန အခန််းလ ွေပြ ်မြ်း goal ကို

လရြောက်လအြောင် သွေြော်းမြောပြစ်ြါ ယ်။ အဒေို အလပခအလနမျ ်းမြော DFS, BFS ကို သို်းေရ
ိုဲ့ ြါ ယ်။

▪ အထူ်းသပြင်လ ြော Game လ ွေမြောေည််း သို်းေိုဲ့ရြါ ယ်။

▪ Beginner level ပြစ် ြောလ ကြောင် အေိုြ်ေိုြြ


် က
ို ိုြရင််းပြေိုက်ြါ ယ်။

336 | P a g e
Data Structure and algorithms for beginners | Dr. Myat Mon Aye

အဆုံးသတ်

အခုစာအုပဟ
် ာ Beginners တ ွေကု ရည်ရွယ် ာ ဖြစ်လုို့ အတဖခခံသတ ာ ရာားတ ွေ နို့

အဓကသသင်သထုက် ာတ ွေကု ထည်သွေင်ားတရားသာားထာား ာဖြစ်ပါ ယ်။ ရှင်ားလင်ားချက်တ ွေ၊

တလကျင်ခန်ားတ ွေကု ပံမ


ု ှန်လုက်လုပခ
် ရင် အကျ ား စ်စံု စ်ရာတ ာ ရရှလမ်မယ်လလ
ုို့ ည်ား တမ ာ်လင်

ပါ ယ်။ ြ ် သူ န ားလည်တစြုို့ န
် ုင်သမ ကက ားစာားပပား တရားထာားပါ ယ်။

အဆံုားထ ြ ်တပား အ ွေက်လည်ား တကျားဇူား င်ပါ ယ်။ ြ ်ရ ာ အဆင်မတဖပ ာ၊

န ားမလည် ာ စ်စံု စ်ခုရှရင် တေြန် အကကံဖပ နုင်ပါ ယ်။ အကကံဖပ ချက်မျာားကုလည်ား တမ ာ်လင်

တနပါ ယ်။ န
် ုင်သမ ြ ်ရသူ အကျ ားရှတအာင် အဆင်မတဖပ ာတ ွေကု တန က်ကတနလုက်ပပား

ဖြည်ဆည်ားတပားြို့ု ကက ားစာားသွောားပါမယ်။

ဒစာအုပပ် ပားရင်တ ာ အခုတခ ်တဖပာတဖပာတန တနရာ ကာ မှာ မပါမဖြစ် Data Science နို့

Artificial Intelligence (AI) ို့န


ု ို့ မှာပါေင် Data ပံစ
ု ံအမျ ားမျ ား နှင် အဒ Data တ ွေတပေါ်မှာ

အလုပ်လုပ် data mining, machine learning အတ ကာင်ားတရားပါဦားမယ်။ အဒ ာသာရပ်တ ွေဟာ

တကျာင်ား က် န
ု ်ားက အကက က်ဆံုား ာသာရပ်တ ွေဖြစ်ခပပား၊ Master Thesis တရာ၊ Ph.D. Thesis

မှာပါ အဒ Field နို့ လုပ်ခ ာဖြစ်ပါ ယ်။

တကျားဇူားအထူား င်စွောဖြင်

Dr. Myat Mon Aye

9-5-2021

337 | P a g e

You might also like