Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
19 lines (10 sloc) 3.75 KB

How to learn Data Structure & Algorithm

Algorithm ေတြ Data Structure ေတြ ေလ့လာရင္ ဘာေတြလိုလဲ။

  1. အလြတ္က်က္ဖုိ.မလိုဘူး စာအုပ္ထဲမွာ ပါမွာပဲ algorithm ဆုိတာ pseudo code ပါမယ္ အဲ့တာကို လုပ္ရမွာက programming language နဲ. implement လုပ္ႏုိင္ဖုိ. မလုပ္ႏုိင္လဲ reference implementation ေတြသံုးလို.ရတယ္။

  2. Basic Mathematical notation ေတြကို နားလည္ရပါလိမ့္မယ္။ ဥပမာ Set ကုိ ဘယ္လိုေရးလဲ array ကိုဘယ္လိုေရးလဲ Vector ကိုဘယ္လုိ ေတြေရးလဲ variable စာလံုး အထူအပါး အၾကီးအေသးအေပၚေတာင္ လိုက္ၿပီး notation ကြာပါတယ္။ ဒါေတြသိဖုိ.လိုတယ္။

  3. Algorithm တခုခ်င္းက ဘယ္လို problem ေတြကို solve လုပ္တာလဲ ဘယ္လို requriement ေတြရိွသလဲ။ ဥပမာ ဟုိေန.ကေၿပာတဲ့ binary search ဆုိ sorted လုပ္ၿပီးသား array ကိုပဲ ရွာလို.ရမယ္။ ဒါသည္ requirement ေပါ့။ Binary Search ဆုိဘာေကာင္းလဲ ရွာရလြယ္တယ္။ ေနာက္ ကိုသံုးမဲ့ algorithm or Data Structure သည္ time အတြက္ေကာင္းတာလား space အတြက္ေကာင္းတာလား။ ဥပမာ တခ်ိဳ. algorithm ေတြ ဥပမာ compression algorithm ေတြသည္ အဓိက ေနရာသက္သာခ်င္တာ။

  4. ကို. application domain က ဘယ္လုိ characteristic ေတြမ်ားလဲ ဥပမာ random access လုပ္ခ်င္တာလား။ Hash table လုိေကာင္မ်ိဳးဆုိ access time ၿမန္မယ္။ Index အရ ေထာက္ခ်င္တာလား ဒါဆုိ array လိုေကာင္မ်ိဳး။ Key Value အရ ထုတ္ခ်င္တာလား ဒါဆုိ HashMap လုိေကာင္မ်ိဳး။

  5. ေနာက္တခုက ဘယ္လိုအေၿခအေနေတြမ်ားႏုိင္သလဲ။ ဥပမာ worst case က ဘာေတြၿဖစ္မလဲ load ဘယ္ေလာက္မ်ားမလဲ ဒါေတြကို algorithm က ခံႏုိင္လား ေပးႏုိင္လား။

  6. ေနာက္ဆံုး ကုိ. algorithm သည္ large scale လုပ္ရေတာ့မယ္ data အၾကီးၾကီး handle လုပ္ရေတာ့မယ္ဆုိရင္ေတာင္ parallel algorithm အေနနဲ. သံုးလို.ရမလား ဥပမာ map reduce လိုေကာင္မ်ိဳးသံုးၿပီးေတာ့။

  7. ဘယ္ algorithm သည္ time complexity ဘယ္ေလာက္ရိွလဲ မၿဖစ္မေနသိရမယ္။ ဘယ္လိုအေၿခအေန worst case မွာဆုိ ဘယ္ေလာက္ရိွသလဲ။

  8. ေနာက္ ကုိသံုးမဲ့ algorithm သည္ ကို implement လုပ္မဲ့. language အေနနဲ. ကိုက္ရဲ.လား ဥပမာ pointer သံုးၿပီး လုပ္ရတဲ့ algorithm မ်ိဳး memory မွာ pointer arithmetic သံုးရမယ္ဆုိရင္ C/C++ လုပ္တာ ပိုေကာင္းတယ္။