DSA bilan tanishuv

Ma’lumotlar tuzilmalari ma’lumotlarni turli tuzilmalarda qanday saqlash mumkinligi haqidadir.

Algoritmlar turli masalalarni, ko‘pincha ma’lumotlar tuzilmalari bo‘ylab qidirish va ularni o‘zgartirish orqali, qanday hal qilish haqidadir.

Ma’lumotlar tuzilmalari va algoritmlar (DSA) nazariyasi katta hajmdagi ma’lumotlardan foydalanib masalalarni samarali hal qilishimizga yordam beradi.

ULASHISH

Ma’lumotlar tuzilmalari nima?

Ma’lumotlar tuzilmasi — ma’lumotlarni saqlash usuli.

Qanday ma’lumotlarga ega ekanimiz va ular bilan nima qilmoqchi ekanimizga qarab, ma’lumotlarni turli usullarda tuzilmalaymiz.

Family Tree
Shajara (oila daraxti)

Avval g‘oyani tushunib olish uchun kompyuterlarni nazarda tutmagan holda bir misolni ko‘rib chiqaylik.

Agar qarindoshlarimiz haqidagi ma’lumotlarni saqlamoqchi bo‘lsak, ma’lumotlar tuzilmasi sifatida shajaradan (oila daraxtidan) foydalanamiz. Shajarani ma’lumotlar tuzilmasi sifatida tanlashimizning sababi shundaki, bizda qarindoshlarimiz va ularning o‘zaro qanday qarindosh ekanligi haqida ma’lumot bor hamda bir necha avlod oldingi muayyan oila a’zosini oson topa olishimiz uchun umumiy manzarani ko‘rishni xohlaymiz.

Bunday shajara ma’lumotlar tuzilmasi ko‘z oldingizda bo‘lsa, masalan, onamning onasi kimligini ko‘rish oson — bu "Emma", to‘g‘rimi? Ammo ushbu ma’lumotlar tuzilmasi taqdim etadigan boladan ota-onaga boruvchi bog‘lanishlarsiz shaxslarning o‘zaro qanday qarindosh ekanini aniqlash qiyin bo‘lardi.

Ma’lumotlar tuzilmalari katta ma’lumotlar bazalari va internetni indekslash xizmatlari kabi sohalarda katta hajmdagi ma’lumotlarni samarali boshqarish imkonini beradi.

Ma’lumotlar tuzilmalari tez va kuchli algoritmlar yaratishning muhim tarkibiy qismidir. Ular ma’lumotlarni boshqarish va tartibga solishga yordam beradi, murakkablikni kamaytiradi va samaradorlikni oshiradi.

Informatikada ma’lumotlar tuzilmalarining ikki xil turi mavjud.

Primitiv ma’lumotlar tuzilmalari — dasturlash tillari tomonidan taqdim etiladigan, butun sonlar, suzuvchi nuqtali sonlar, belgilar va boolean qiymatlar kabi yakka qiymatlarni ifodalashga mo‘ljallangan asosiy ma’lumotlar tuzilmalari.

Abstrakt ma’lumotlar tuzilmalari — primitiv ma’lumot tiplari yordamida quriladigan hamda murakkabroq va ixtisoslashgan amallarni taqdim etadigan yuqori darajadagi ma’lumotlar tuzilmalari. Abstrakt ma’lumotlar tuzilmalarining keng tarqalgan misollariga massivlar, bog‘langan ro‘yxatlar, steklar, navbatlar, daraxtlar va graflar kiradi.


Algoritmlar nima?

Algoritm — berilgan masalani hal qilish yoki muayyan maqsadga erishish uchun bosqichma-bosqich ko‘rsatmalar to‘plami.

Pommes Frites Recipe
Kartoshka fri retsepti

Qog‘ozga yozilgan pazandalik retsepti algoritmga misol bo‘la oladi: bunda maqsad — muayyan taomni tayyorlash. Aniq bir taomni tayyorlash uchun zarur qadamlar aniq tasvirlab berilgan.

Informatikada algoritmlar haqida gapirganda, bosqichma-bosqich ko‘rsatmalar dasturlash tilida yoziladi va algoritm oziq-ovqat masalliqlari o‘rniga ma’lumotlar tuzilmalaridan foydalanadi.

Algoritmlar kompyuter dasturlashining asosi hisoblanadi, chunki ular vazifalarni bajarish uchun bosqichma-bosqich ko‘rsatmalarni beradi. Samarali algoritm biz izlayotgan yechimni topishga va sekin dasturni tezroq dasturga aylantirishga yordam beradi.

Algoritmlarni o‘rganish orqali dasturchilar yaxshiroq dasturlar yoza oladi.

Algoritmlarga misollar:

  • GPS navigatsiya tizimida eng tez yo‘nalishni topish
  • Samolyot yoki avtomobilni boshqarish (kruiz-nazorat)
  • Foydalanuvchilar qidirayotgan narsani topish (qidiruv tizimi)
  • Saralash, masalan, filmlarni reyting bo‘yicha saralash

Ushbu darslikda ko‘rib chiqadigan algoritmlarimiz muayyan masalalarni hal qilish uchun mo‘ljallangan va ko‘pincha muayyan ma’lumotlar tuzilmalari bilan ishlashga moslashtirilgan. Masalan, "Bubble Sort" algoritmi qiymatlarni saralash uchun mo‘ljallangan va massivlar bilan ishlashga moslashtirilgan.


Ma’lumotlar tuzilmalari va algoritmlar birgalikda

Ma’lumotlar tuzilmalari va algoritmlar (DSA) bir-biri bilan chambarchas bog‘liq. Agar ma’lumotlar tuzilmasi bo‘ylab algoritmlar yordamida samarali qidira olmasangiz yoki uni samarali o‘zgartira olmasangiz, uning qadri kam bo‘ladi; ushbu darslikdagi algoritmlar ham ishlov beradigan ma’lumotlar tuzilmasisiz unchalik qimmatga ega emas.

DSA ma’lumotlarni saqlash va olish, ular ustida amallar bajarish hamda muayyan masalalarni hal qilishning samarali usullarini topish haqidadir.

DSA’ni tushunib, siz quyidagilarni qila olasiz:

  • Muayyan vaziyat uchun qaysi ma’lumotlar tuzilmasi yoki algoritm eng yaxshisi ekanini aniqlash.
  • Tezroq ishlaydigan yoki kamroq xotira ishlatadigan dasturlar yaratish.
  • Murakkab masalalarga qanday yondashish va ularni tizimli ravishda hal qilishni tushunish.


Ma’lumotlar tuzilmalari va algoritmlar qayerda kerak?

Ma’lumotlar tuzilmalari va algoritmlar (DSA) operatsion tizimlardan tortib veb-ilovalargacha deyarli har bir dasturiy tizimda qo‘llaniladi:

  • Ijtimoiy tarmoq yoki qidiruv tizimidagi kabi katta hajmdagi ma’lumotlarni boshqarish uchun.
  • Vazifalarni rejalashtirish, ya’ni kompyuter qaysi vazifani birinchi bajarishi kerakligini hal qilish uchun.
  • Yo‘nalishlarni rejalashtirish uchun, masalan, GPS tizimida A nuqtadan B nuqtagacha eng qisqa yo‘lni topishda.
  • Jarayonlarni optimallashtirish uchun, masalan, vazifalarni imkon qadar tez bajarib bo‘ladigan tarzda tartiblashda.
  • Murakkab masalalarni hal qilish uchun: yuk mashinasini joylashning eng yaxshi usulini topishdan tortib, kompyuterning ma’lumotlardan "o‘rganishini" ta’minlashgacha.

DSA dasturiy ta’minot olamining deyarli har bir sohasida asosiy o‘rin tutadi:

  • Operatsion tizimlar
  • Ma’lumotlar bazasi tizimlari
  • Veb-ilovalar
  • Mashinali o‘rganish
  • Video o‘yinlar
  • Kriptografik tizimlar
  • Ma’lumotlar tahlili
  • Qidiruv tizimlari

Nazariya va terminologiya

Darslik davomida biz ishlaydigan ma’lumotlar tuzilmalari va algoritmlarni yaxshiroq tushunishimiz uchun yangi nazariy tushunchalar va terminologiya (yangi so‘zlar) kerak bo‘ladi.

Bu yangi so‘zlar va tushunchalar kerak bo‘lganda kiritiladi va to‘g‘ri tushuntiriladi, ammo oldinda nimalar kutayotgani haqida umumiy tasavvur hosil qilish uchun quyida ba’zi asosiy atamalar ro‘yxati keltirilgan:

Atama Tavsif
Algoritm Muayyan masalani hal qilish uchun bosqichma-bosqich ko‘rsatmalar to‘plami.
Ma’lumotlar tuzilmasi Ma’lumotlardan samarali foydalanish mumkin bo‘lishi uchun ularni tashkil qilish usuli. Keng tarqalgan ma’lumotlar tuzilmalariga massivlar, bog‘langan ro‘yxatlar va ikkilik daraxtlar kiradi.
Vaqt murakkabligi Algoritm ishlov berayotgan ma’lumotlar hajmiga bog‘liq ravishda algoritm bajarilishi uchun ketadigan vaqt miqdorining o‘lchovi.
Xotira murakkabligi Algoritm ishlov berayotgan ma’lumotlar hajmiga bog‘liq ravishda algoritm foydalanadigan xotira miqdorining o‘lchovi.
Big O notatsiyasi Argument muayyan qiymatga yoki cheksizlikka intilganda funksiyaning limit holatdagi xatti-harakatini tavsiflovchi matematik belgilash. Ushbu darslikda algoritmning vaqt murakkabligini tavsiflash uchun ishlatiladi.
Rekursiya Funksiya o‘zini o‘zi chaqiradigan dasturlash usuli.
Bo‘lib tashla va hukmronlik qil (Divide and Conquer) Murakkab masalalarni kichikroq, osonroq hal qilinadigan qism masalalarga bo‘lib, qism masalalarni yechib, so‘ngra yechimlarni birlashtirish orqali hal qilish usuli. Algoritmda ushbu usul qo‘llanilganda ko‘pincha rekursiyadan foydalaniladi.
Brute Force (to‘liq tanlash) Algoritm barcha mumkin bo‘lgan yechimlarni shunchaki sinab ko‘rib, so‘ngra eng yaxshisini tanlash orqali ishlaydigan oddiy va to‘g‘ridan-to‘g‘ri usul.

Nimadan boshlash kerak?

Ushbu darslikda keyingi ma’lumotlar tuzilmasiga o‘tishdan oldin avval bitta ma’lumotlar tuzilmasini unga mos algoritmlar bilan birga o‘rganasiz.

Darslik davom etgan sari tushunchalar murakkablashib boradi, shuning uchun DSA’ni darslikni boshidan boshlab bosqichma-bosqich o‘tib o‘rganish maqsadga muvofiq.

Oldingi sahifada aytib o‘tilganidek, ushbu darslikni o‘tishdan oldin eng keng tarqalgan dasturlash tillaridan kamida bittasini, masalan, JavaScript, C yoki Python tilini yaxshi bilishingiz kerak.

Keyingi sahifada faqat primitiv ma’lumotlar tuzilmalari (ikkita butun sonli o‘zgaruvchi) yordamida dastlabki 100 ta Fibonachchi sonini chiqaradigan ikki xil algoritmni ko‘rib chiqamiz. Algoritmlardan biri sikldan, ikkinchisi esa rekursiya deb ataladigan usuldan foydalanadi.

Davom etish uchun "Keyingi" tugmasini bosing.



W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!