Oldingi postimda men qisqacha "algoritmlar" nima ekanligini muhokama qildim. Endi biz ma'lumotlar tuzilmalari nima ekanligi, ularning algoritmlar bilan qanday bog'liqligi haqida gaplashishimiz va siz duch keladigan turli xil ma'lumotlar tuzilmalari haqida qisqacha ma'lumot olishingiz mumkin.

Ma'lumotlar strukturasi ma'lumotlarni olish va ularni oson kirish va o'zgartirish mumkin bo'lgan formatda tashkil qilish, boshqarish yoki saqlashdir. Muayyan operatsiyalarni bajarish ushbu ma'lumotlarga kirish, o'zgartirish yoki hatto o'chirishni o'z ichiga oladi.

Shunday qilib, quyida ma'lumotlar tuzilmalari va algoritmlarining juda oddiy ta'rifi va ularning bir-biri bilan qanday aloqasi bor:

  • Ama'lumotlar strukturasibu muayyan operatsiyalarni samarali bajarishimiz uchun ma'lumotlarni samarali tashkil qilish va boshqarishdir. Analgoritmbu kerakli natijaga erishish uchun bosqichma-bosqich bajarilishi kerak bo'lgan protsedura.
  • Algoritm bosqichlari muammoni hal qilish uchun bir yoki bir nechta ma'lumotlar tuzilmalaridan foydalanadi.

Ajoyib, endi biz ikki xil, ammo o'zaro bog'liq elementlar haqida asosiy tushunchaga egamiz, quyida siz o'sha qiziqarli algoritmlarni hal qilish uchun duch keladigan umumiy ma'lumotlar tuzilmalari ro'yxati keltirilgan!

Avval tushunaylikki, har xil turdagi ilovalar uchun mos bo'lgan har xil turdagi ma'lumotlar tuzilmalari mavjud va ular keng ma'nodachiziqli va chiziqli bo'lmaganma'lumotlar deb tasniflanadi.

Chiziqli ma'lumotlar strukturasida ketma-ket joylashtirilgan ma'lumotlar elementlari mavjud va har bir element elementi oldingi va keyingi elementiga ulangan. Ma'lumotlar strukturasini aylanib o'tish yoki ma'lumotlar strukturasi bo'ylab takrorlash, ya'ni strukturaning har bir elementiga "ziyorat qilish" yoki "tegish" degan ma'noni anglatadi. Ushbu ma'lumotlar tuzilmalarini amalga oshirish oson, chunki kompyuter xotirasi ham ketma-ket. Chiziqli ma'lumotlar tuzilmalariga massivlar, bog'langan ro'yxat, stek va navbat misol bo'ladi.

Chiziqli bo'lmagan ma'lumotlar tuzilmalari ketma-ket yoki chiziqli joylashtirilmaydi. Har bir element boshqa elementlarga ulanish uchun bir nechta yo'llarga ega bo'lishi mumkin. Bitta ishda barcha elementlarni takrorlay olmaysiz yoki aylana olmaysiz. Chiziqli bo'lmagan ma'lumotlar tuzilmalarini amalga oshirish oson emas, lekin kompyuter xotirasidan foydalanishda samaraliroq. Chiziqli bo'lmagan ma'lumotlar tuzilmalariga misollar daraxtlar va grafiklarni o'z ichiga oladi.

Keling, turli xil ma'lumotlar tuzilmalarini qisqacha ko'rib chiqaylik:

Masiv

  • Massiv ma'lumotlar strukturasining eng oddiy turi bo'lib, unda bir xil ma'lumotlar tipidagi elementlar (butun son, float, string va boshqalar) saqlanadi.
  • Bu chiziqli ma'lumotlar turi
  • Massivning har bir pozitsiyasida saqlangan ma'lumotlarga indeks deb ataladigan ijobiy qiymat beriladi.
  • Indeks qiymati massivning birinchi elementi uchun 0 dan boshlanadi.

Aytaylik, bizda 6 ta oziq-ovqat elementi narxlari va ularning indeks pozitsiyasi bor. Biz barcha butun sonlarni massivda saqlashimiz mumkin.

Ushbu massivni quyidagicha yozish mumkin:

const arr = [10, 5, 23, 8, 12, 7]

Bog'langan ro'yxat

  • Bog'langan ro'yxat - bu tugunlardan tashkil topgan ma'lumotlar strukturasining bir turi va har bir tugun keyingi tugunning manzilini "biladi". Rasm yaratish uchun nuqtalarni bog'lash bunga yaxshi misol bo'ladi. Nuqtalarni qanday ulashni bilasiz, chunki ular raqamlangan.
  • Bog'langan ro'yxat - elementlarning ketma-ket to'plami. Element ikkita asosiy ma'lumot bo'lagidan iborat tugunlar ko'rinishida saqlanadi - ma'lumotlar qiymatining o'zi va ko'rsatgich / keyingi ro'yxatdagi keyingi tugunga havola.
  • Bog'langan ro'yxatda saqlangan ma'lumotlar har qanday shaklda, satrlarda, raqamlarda yoki belgilarda bo'lishi mumkin.
  • Bog'langan ro'yxatlar massiv kabi elementga to'g'ridan-to'g'ri kirish uchun ajoyib emas, lekin ular elementlarni xotirada saqlash usuli tufayli elementlarni kiritish va o'chirish uchun juda samarali.
  • Bog'langan ro'yxatlarning ikki turi mavjud - ayakka bog'langan ro'yxatbu erda har bir tugun ro'yxatdagi keyingi tugunga bitta ko'rsatgichga ega. Shuningdek, ikki marta bog'langan ro'yxat mavjud bo'lib, bu erda har bir tugunning keyingi tugunga ko'rsatgichi va oldingi tugunning ikkinchi ko'rsatkichi mavjud.

Bog'langan ro'yxat ma'lumotlar strukturasining asosiy xususiyatlari quyidagilardir:
- o'lcham: Bog'langan ro'yxatdagi elementlar soni
- bosh: Bog'langan ro'yxatdagi birinchi element
- tail: Oxirgi element bog'langan ro'yxatda

  • Birinchi tugun (2 tadan iborat) bosh tugun deb ataladi, chunki unga ishora qiluvchi tugun yo'q.
  • 2-tugun 4-ni o'z ichiga olgan tugunning manzilini saqlaydi va hokazo.
  • Quyruq tuguni null ga ishora qiladi, bu ro'yxatning oxirini ko'rsatadi.

Bog'langan ro'yxatning ba'zi amaliy ilovalari quyidagilarni o'z ichiga oladi:

  • Tasvirlar bir-biri bilan bog'langan bo'lib, tasvir dasturi oldingi va keyingi rasmlarni ko'rish uchun bog'langan ro'yxatni ishlatadi.
  • Musiqa pleyerlari musiqa o'rtasida almashish uchun bog'langan ro'yxatdan ham foydalanadilar va ko'pincha aylana bog'langan ro'yxat ishlatiladi.

Agar siz bog'langan ro'yxatlarni ko'proq o'rganmoqchi bo'lsangiz, ushbu ajoyib manbalarni ko'rib chiqing:

NoobCoder — Yangi boshlanuvchilar uchun JavaScript-dagi bog'langan ro'yxat
Beiatrix — Bog'langan ro'yxatlar | JavaScript-dagi ma'lumotlar tuzilmalari

Xesh jadvali

  • Kalit-qiymat juftliklari ro'yxatini yaratish imkonini beruvchi ma'lumotlar strukturasi. Keyin ushbu qiymat uchun kalit yordamida ma'lum bir qiymatni olishingiz mumkin.
  • Xesh jadvali - bu assotsiativ massivlarni yoki kalit qiymatlar juftlarini xaritalashni amalga oshirish uchun xeshingdan foydalanadigan ma'lumotlar strukturasi
  • Xesh funktsiyasi yoki xeshlash satrni oladi, uni qandaydir butun songa yoki harflar va raqamlar qatoriga aylantiradi va keyin bu butun sonni indeksga aylantiradi.
  • Xesh-jadval tarkibni saqlaydigan chelaklar deb ataladigan bir nechta to'ldiruvchilardan boshlanadi. Xesh jadvaliga har qanday kalit qiymat juftligini qo'shish uchun siz kalitni olib, uni qiymatni saqlaydigan massivdagi indeksga mos keladigan raqamni chiqaradigan xesh funktsiyasidan o'tkazasiz.

Agar siz hash jadvallari haqida ko'proq ma'lumot olishni istasangiz. Quyidagi manba mavzuga chuqurroq kirib boradi:

"Kompyuter fanlari - xesh jadvallari va xesh funktsiyalari"

Stack

  • Stack - bu ma'lumotlarni ma'lum tartibda tartibga solishga yordam beradigan va "oxirgi kelgan birinchi chiqadi" (LIFO) tamoyiliga amal qiladigan ma'lumotlar tuzilmasi. Bu shuni anglatadiki, stek ichiga kiritilgan oxirgi element birinchi bo'lib olib tashlanadi.
  • To'plamni kitoblar to'plami deb o'ylab ko'ring, bu erda siz kitoblarni olib tashlash uchun faqat eng yuqori qismini olib tashlashingiz mumkin va siz faqat tepaga yangi kitob qo'shishingiz mumkin. Ushbu turdagi ma'lumotlarga kirish "oxirgi kiruvchi birinchi chiqadi" deb ataladi.

Navbat

  • "Birinchi kiruvchi birinchi chiqadi" (FIFO) tamoyiliga amal qiluvchi chiziqli ma'lumotlar strukturasi. Birinchi kiritilgan element birinchi bo'lib olib tashlanadi.
  • Navbatning keng tarqalgan misollari xizmatni kutayotgan yoki biror narsa olishni kutayotgan odamlar qatoridir. Navbatdagi birinchi kishiga birinchi bo'lib xizmat ko'rsatiladi, oxirgi navbatda turgan kishi esa oxirgi xizmat qiladi.

Grafik

  • Cheklangan cho'qqilar (yoki tugunlar) to'plamidan va bir juft tugunni bog'laydigan Qirralar to'plamidan iborat chiziqli bo'lmagan ma'lumotlar strukturasi.
  • Grafiklar shahar yoki telefon tarmog'idagi yo'llar kabi tarmoqlarni ko'rsatish uchun ishlatiladi. Ular Facebook va LinkedIn ijtimoiy tarmoqlarida ham qo'llaniladi.

  • Yuqoridagi diagrammada:
    Vertices = {A, B, C, D, E
    Edges = {AB, BE, ED, DC, CA, AD, BD}

Daraxt

  • Qirralar bilan bog'langan tugunlardan iborat chiziqli bo'lmagan ierarxik ma'lumotlar strukturasi. Har bir tugun qiymat yoki ma'lumotni o'z ichiga oladi va u tugun bolasiga ega yoki bo'lmasligi mumkin.
  • Ierarxik tashkilotga misollar oila daraxti, HTMLda — Hujjat obyekti modeli (DOM) daraxt sifatida ishlaydi.

U erda siz turli xil muammolarni hal qilish uchun algoritmlaringizda foydalanishingiz mumkin bo'lgan har xil turdagi ma'lumotlar tuzilmalari haqida umumiy ma'lumotga egasiz! Keyinchalik, biz vaqt va makonning murakkabligini hal qilamiz.