Өгөгдлийн бүтэц болон алгоритм

Trey 976
2 min readDec 21, 2019

--

Өгөгдлийн бүтэц болон алгоритм гэж юу вэ?

Өгөгдлийн бүтэц нь өгөгдлийг үр дүнтэй боловсруулах зорилгоор зохион байгуулах арга хэлбэр юм.

Алгоритм нь асуудлыг/problem/ шийдэхийн тулд дагаж мөрдөх тодорхой тооны/хязгаартай/ сайтар тодорхойлогдсон, алхам алхамаар ажиллах үйлдлийн/зааврын/ дараалал юм.

Өгөгдлийн бүтэц нь бидний өдөр тутмын амьдралд байнга ажиглагдаж байгаа. Жишээлбэл бид ямар нэг зүйлийн дараалалд зогсвол queue буюу эхэнд ирсэн нь эхэнд үйлчлүүлэх зарчмыг дагаж байна, ажил дээрээ очоод шууд хэн нь миний дарга байна гэдгээ мэдэж байна гэдэг нь tree буюу шаталсан бүтцээр ажиллаж байна гэх мэт.

Өгөгдлийн бүтэц нь дотроо дараах төрлүүдэд хуваагддаг.

Primitive:

Ихэнх програмчлалын хэлнүүдэд тодорхойлогдсон байдаг үндсэн бүтцүүд.

  • Integer, Float, Character, Boolean…

Non Primitive:

Non Primitive өгөгдлийн бүтэц нь дотроо physical болон logical өгөгдлийн бүтэц гэж 2 хуваагдана. Physical нь бие дааж implement хийгддэг бөгөөд санах ойд бодитоор оршдог бол Logical өгөгдлийн бүтцүүд нь physical өгөгдлийн бүтцийн тусламжтай, тэднээс хамаарч үүсгэгдэнэ.

  • Physical: Array, Linked List
  • Logical: Queue, Stack, Tree, Graph

Мөн зарим тохиолдолд Linear болон Non-linear өгөгдлийн бүтэц гэж ангилдаг.

  • Linear: Array, Linked List, Queue, Stack
  • Non-linear: Tree, Graph

Яагаад том компаниуд Өгөгдлийн бүтэц, алгоритмын асуултууд ажлын ярилцлагад асуудаг вэ?

Жижиг компаниуд бол мэдээж function, stored procedure 2-ын ялгаа юу вэ? Abstract class, Interface 2-ын ялгаа юу вэ? Polymorphism гэж юу вэ? гэх мэтчилэн Object Oriented Programming буюу тухайн ажлын байрныхаа ашигладаг технологитой холбоотой асуултууд асуудаг бол томоохон технологийн компаниуд 80% нь өгөгдлийн бүтэц, алгоритмтай холбоотой асуултууд байдаг.

Үүнийг асуух шалтгаан нь тухайн хүний problem-solving skill, coding/testing skill-ийг шалгахыг л хүсдэг. Мөн тухайн хүн кодоо бичихдээ эдгээр өгөгдлийн бүтцийнхээ шинж чанарыг ойлгож байгаа юу гэдгийг мэдэхийг хүсдэг. Өөрөөр хэлбэл Copy-Paste, StackOverFlow developer-уудыг танихад хэрэгтэй.

--

--