Научная статья на тему 'SARALASH ALGORITMLARI'

SARALASH ALGORITMLARI Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
133
43
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
saralash / algoritm / massivda saralash / faylda saralash / elementlarni saralash / dasturchilar. / sorting / algorithm / array sorting / file sorting / element sorting / programmers.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Xursandov, Hamidullo, Keldiyorova, Zarinabonu

Ushbu maqola dasturlashda eng muhim mavzulardan biri bo‘lgan saralashga bag‘ishlanadi. Ma'lumotlarni saralash yoki tartibga solish juda muhim, chunki tartibsiz ma'lumotlar bilan ishlash qiyinchilik tug‘diradi va bunday tizimlar sekin va xatolarga moyil bo‘ladi.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

SORTING ALGORITHMS

This article focuses on sorting, one of the most important topics in programming. Sorting or organizing data is important because disorganized data is difficult to work with and such systems are slow and prone to errors.

Текст научной работы на тему «SARALASH ALGORITMLARI»

Oriental Renaissance: Innovative, educational, natural and social sciences

SJIF 2024 = 7.404 / ASI Factor = 1.7

SARALASH ALGORITMLARI

1Xursandov Hamidullo 2Keldiyorova Zarinabonu

!SamDU Urgut filiali Tabiiy fanlarni o'qitish metodikasi kafedrasi asissenti 2Samarqand davlat universiteti Urgut filiali talabasi E-mail: bonukeldiyorova3 5 @gmail .com

ANNOTATSIYA

Ushbu maqola dasturlashda eng muhim mavzulardan biri bo 'lgan saralashga bag'ishlanadi. Ma'lumotlarni saralash yoki tartibga solish juda muhim, chunki tartibsiz ma'lumotlar bilan ishlash qiyinchilik tug'diradi va bunday tizimlar sekin va xatolarga moyil bo 'ladi.

Kalit so'zlar: saralash, algoritm, massivda saralash, faylda saralash, elementlarni saralash, dasturchilar.

АННОТАЦИЯ

Эта статья посвящена сортировке, одной из наиболее важных тем в программировании. Сортировка или организация данных важна, поскольку с неорганизованными данными трудно работать, а такие системы работают медленно и подвержены ошибкам.

Ключевые слова: сортировка, алгоритм, сортировка массива, сортировка файлов, сортировка элементов, программисты.

ABSTRACT

This article focuses on sorting, one of the most important topics in programming. Sorting or organizing data is important because disorganized data is difficult to work with and such systems are slow and prone to errors.

Key words: sorting, algorithm, array sorting, file sorting, element sorting, programmers.

KIRISH

Saralash - bu berilgan ma'lumot elementlarini ba'zi bir xususiyatlariga ko'ra tartibga solish jarayonidir. Odatda, saralash mezoni sifatida aniq bir raqamli maydon (kalit) ishlatiladi. Elementlarni kalit bo'yicha tartibga solish jarayonida har bir keyingi elementning kaliti oldingisidan kichik bo'lsa kamayish tartibida, aksincha bo'lsa o'sish tartibida saralash amalga oshiriladi.

MUHOKAMA VA NATIJALAR

Saralashning asosiy maqsadi - saralangan ma'lumotlarni qayta ishlash jarayonida zarur bo'ladigan elementlarni tez va oson topishni soddalashtirishdan iborat.

Oriental Renaissance: Innovative, educational, natural and social sciences

SJIF 2024 = 7.404 / ASI Factor = 1.7

Saralash algoritmlari ikki asosiy guruhga bo'linadi:

> Ichki saralash algoritmlari (massivda saralash)

> Tashqi saralash algoritmlari (faylda saralash)

Ichki saralash algoritmlari ma'lumotlarni tezkor xotirada saralaydi. Bu usullarda elementlarni qayta joylashtirish jarayoni tezkor xotiraning o'zida amalga oshiriladi. Ichki saralash algoritmlari uch asosiy sinfga bo'linadi: S Qo'yish orqali saralash S Tanlash asosida saralash S Almashtirish orqali saralash1 Misol uchun, telefon raqamlari yozilgan daftarchangiz bor (qo'l telefonlari ommalashmagan davrni eslang) va nomlar tartibsiz yozilgan. Nodir ismli do'stingizning raqamini topish uchun butun daftarchani tekshirib chiqishingiz kerak bo'ladi, bu esa ko'p vaqt talab etadi. Ammo, agar ular alifbo tartibida saralangani bo'lsa, N harfiga o'tib qidirishni boshlaysiz va vaqtni sezilarli darajada tejaysiz.

Saralash - bu berilgan ma'lumot elementlarini ba'zi bir xususiyatlariga ko'ra tartibga solish jarayonidir. Odatda, saralash mezoni sifatida aniq bir raqamli maydon (kalit) ishlatiladi. Elementlarni kalit bo'yicha tartibga solish jarayonida har bir keyingi elementning kaliti oldingisidan kichik bo'lsa kamayish tartibida, aksincha bo'lsa o'sish tartibida saralash amalga oshiriladi.

Saralashning asosiy maqsadi - saralangan ma'lumotlarni qayta ishlash jarayonida zarur bo'ladigan elementlarni tez va oson topishni soddalashtirishdan iborat.

Bu bo'limda biz arraydagi ma'lumotlarni saralashni ko'rib chiqamiz va saralash algoritmlarining olti turini o'rganamiz: Selection sort (Tanlab saralash) Bubble sort (Pufakchali saralash) Insertion sort (Joylashtirib saralash) Quick sort (Tezkor saralash) Merge sort (Qo'shib saralash) Radix sort

Elementlarni saralash - bu dasturchilar o'rganishi kerak bo'lgan asosiy algoritmlardan biridir. Ilgari informatika faniga kam e'tibor berilgan bo'lsa-da, hozirda maktablarda saralash algoritmlarini tushunish va amalga oshirish muhimdir. Asosiy algoritmlar, odatda, for tsikli yordamida yoziladi. Massiv kabi elementlar

1 Алгоритмы в современной мутематике и ее приложениях. Материалы международного симпозиума. Ургенч. 1979 г. Под редакцией А.П. Ершова и Д. Кнута. 8-с.

Oriental Renaissance: Innovative, educational, natural and social sciences

SJIF 2024 = 7.404 / ASI Factor = 1.7

to'plamini saralash uchun ushbu to'plamni qandaydir tarzda kesib o'tish kerak. 2Masalan:

int[] array ~ {10, 2, 10, 3, 1, 2, 5}; for (int i - 0; i < array.length; i++) { —System.out.println(array[i]);

sonlar = list(range(l, 11)) toqlar = [ juftlar = [] for son in sonlar: if son % 2 == 0'.

juftlar.append(son) else :

toqlar,append(son) print("Toqlar:", toqlar) print("Juftlar:juftlar)

3Ushbu kod qismini ko'rib chiqaylik: int i qiymatini 0 dan massivning oxirgi elementiga qadar o'zgartiradigan tsikl mavjud. Asosan, biz oddiygina massivdagi har bir elementni olib, uning mazmunini chop etamiz. Massivdagi elementlar qancha ko'p bo'lsa, kodning bajarilishi shunchalik uzoq davom etadi. Ya'ni, agar n elementlar soni bo'lsa, n=10 bo'lganda dastur n=5 bo'lgandan ikki marta ko'proq vaqtni oladi. Dasturimizda bitta tsikl bo'lgani uchun bajarilish vaqti chiziqli ravishda oshadi: qancha ko'p element bo'lsa, bajarilish shunchalik uzoq davom etadi. Bu degani, yuqoridagi kod algoritmi chiziqli vaqtda (O(n)) ishlaydi. Bunday hollarda "algoritm murakkabligi" O(n) deb ataladi. Bu belgi "katta O" yoki "asimptotik xatti-harakatlar" deb ham ataladi. Siz shunchaki "algoritmning murakkabligini" eslab qolishingiz mumkin.

Shunday qilib, bizda massiv bor va uni takrorlashni bilamiz. Keling, uni o'sish tartibida saralashga harakat qilaylik. Bu shuni anglatadiki, ikkita element (masalan, a=6, b=5) berilgan bo'lsa, agar a b dan katta bo'lsa (a > b bo'lsa), a va b ni almashtirishimiz kerak. Massivda bu shunday amalga oshiriladi: agar array[i] > array[i - 1] bo'lsa, elementlarni almashtirish kerak. Almashtirishni quyidagi kod yordamida amalga oshirish mumkin:

private void swap(int[] array, int indl, int ind2) {

int tmp - array[ind1];

2 Амиров ва б. Ахборот-коммуникация технологиялари изошли лугати ваколатхонаси, 2010. 12-б.

БМТТДнинг Узбекистондаги

3

Белов М.П. Основы алгоритмизации в информационных системах.Учебное пособие. СПб.:СЗТУ. 2003г.,26-с.

Oriental Renaissance: Innovative, educational, natural and social sciences

SJIF 2024 = 7.404 / ASI Factor = 1.7

—array[ind1] = array[ind2];

—array[ind2] = tmp; }

Endi quyidagicha yozish mumkin: Int [ ] array = {10, 2, 10, 3, 1, 2, 5}; System.out.println(Arrays.toString(array)); for (int i = 1; i < array.length; i++) { —if (array[i] < array[i—

-swap(array, i, i 1);

—}

}

System.out.println(Arrays.to String(array));

array = [10, 2, IS, 3, 2, 5] print(array)

for j in range(len(array)-1):

for i in range(len(array)-l): if arrayfi] > array[i+l]: tmp = arrayfi] arrayfi] = array[i+l] array[i+l] = tmp

print(array)

Saralash algoritmlarining samaradorligini bir necha parametrlari bo'yicha farqlash mumkin. Bu parametrlarning asosiylari quyidagilar hisoblanadi:

- saralash uchun sarflanadigan vaqt;

- saralash uchun talab qilinadigan tezkor xotira hajmi;

Saralash algoritmlarini baholashda faqat «joyida» saralash usullarini qarab chiqamiz, ya'ni saralash jarayoni uchun qo'shimcha xotira zahirasi talab qilinmaydi. Saralash uchun sarf qilinadigan vaqtni esa, saralash bajarilishi jarayonida amalga oshiriladigan taqqoslashlar va o'rin almashtirishlar soni orqali hisoblash mumkin. Ixtiyoriy saralash usulida taqqoslashlar soni O(nlog2n) dan O(n2) gacha bo'lgan oraliqda yotadi.4

Ma'lumotlarni saralashning qat'iy (to'g'ri) va yaxshilangan usullari mavjud bo'lib, qat'iy usullariga quyidagilarni misol qilib olish mumkin:

1) to'g'ridan-to'g'ri qo'yish orqali saralash usuli;

2) to'g'ridan-to'g'ri tanlash orqali saralash usuli;

3) to'g'ridan-to'g'ri almashtirish orqali saralash usuli;

Bu uchala saralash usullarining samaradorligi deyarli bir xil.

4 Успенский В.А., Семенов А.Л. Теория алгоритмов: основные открытия и приложения. М., Наука, 1987.15 -с.

Oriental Renaissance: Innovative, educational, natural and social sciences

SJIF 2024 = 7.404 / ASI Factor = 1.7

Tanlash Saralash

Tanlash saralash algoritmi - bu elementlarni tartibga solish uchun foydalaniladigan yana bir usul bo'lib, u kvadratik murakkablikka ega. Tanlash saralash algoritmining asosiy g'oyasi shundan iboratki, har bir o'tishda eng kichik element topiladi va u boshiga o'tkaziladi. Har bir yangi o'tish keyingi elementdan boshlanadi. Quyidagi kod tanlash saralash algoritmini ifodalaydi: int[] array = {10, 2, 10, 3, 1, 2, 5}; System.out.println(Arrays.toStrmg(array)); for (int left = 0; left < array.length; left++) { —int minInd = left;

—for (int i = left; i < array.length; i++) { -if (array[i] < array[minInd]) {

-minInd = i;

-}

—swap(array, left, minInd); }

System.out.println(Arrays.to String(array)); Bu yerda swap funksiyasi elementlarni joylarini almashtiradi: private void swap(int[] array, int indl, int ind2) { —int tmp = array[ind1]; —array[ind1] = array[ind2];

—array[ind2] = tmp; }

array = [10j 2, 16j 3, lj 2, 5] print(array)

for left in range(len(array)): mir_ind = left

for i in range(leftj len(array)): if array[i] < array[minind]: minind = i

array[left]j array[minind] = array[min_ind]j array[left] print(array)

Tanlash saralash algoritmi beqaror, chunki bir xil elementlar o'z o'rnini o'zgartirishi mumkin. Masalan, ikki bir xil qiymatli elementning tartibi o'zgarishi mumkin. Bu algoritm O(n2) murakkablikka ega bo'lib, tsikl ichida yana bir tsikl mavjud bo'lganligi sababli, n element uchun n * n operatsiya bajariladi.

Oriental Renaissance: Innovative, educational, natural and social sciences

SJIF 2024 = 7.404 / ASI Factor = 1.7

Saralash algoritmlarining samaradorligini bir necha parametrlari bo'yicha farqlash mumkin. Bu parametrlarning asosiylari quyidagilar hisoblanadi:

- saralash uchun sarflanadigan vaqt;

- saralash uchun talab qilinadigan tezkor xotira hajmi;

Saralash algoritmlarini baholashda faqat «joyida» saralash usullarini qarab chiqamiz, ya'ni saralash jarayoni uchun qo'shimcha xotira zahirasi talab qilinmaydi. Saralash uchun sarf qilinadigan vaqtni esa, saralash bajarilishi jarayonida amalga oshiriladigan taqqoslashlar va o'rin almashtirishlar soni orqali hisoblash mumkin. Ixtiyoriy saralash usulida taqqoslashlar soni O(nlog2n) dan O(n2) gacha bo'lgan oraliqda yotadi.

Ma'lumotlarni saralashning qat'iy (to'g'ri) va yaxshilangan usullari mavjud bo'lib, qat'iy usullariga quyidagilarni misol qilib olish mumkin:

1) to'g'ridan-to'g'ri qo'yish orqali saralash usuli;

2) to'g'ridan-to'g'ri tanlash orqali saralash usuli;

3) to'g'ridan-to'g'ri almashtirish orqali saralash usuli;

Bu uchala saralash usullarining samaradorligi deyarli bir xil.5 XULOSA

Tanlash va qo'shish saralash algoritmlari har ikkalasi ham o'ziga xos afzalliklarga ega. Tanlash saralash oson tushunarli va amalga oshiriladi, lekin beqaror. Qo'shish saralash barqaror va elementlar tartiblangan yoki deyarli tartiblangan bo'lsa yaxshi ishlaydi. Har ikki algoritm kvadratik murakkablikka ega bo'lib, katta hajmdagi ma'lumotlar uchun samarali emas. Shu bilan birga, ular oddiy va o'rganish uchun juda mos keladi.

FOYDALANILGAN ADABIYOTLAR (REFERENCES):

1. Алгоритмы в современной мутематике и ее приложениях. Материалы международного симпозиума. Ургенч. 1979 г. Под редакцией А.П. Ершова и Д. Кнута. 8-с.

2. Амиров ва б. Ахборот-коммуникация технологиялари изошли лугати. БМТТДнинг Узбекистондаги ваколатхонаси, 2010. 12-б.

3. Белов М.П. Основы алгоритмизации в информационных системах.Учебное пособие. СПб.:СЗТУ. 2003г.,26-с.

4. Успенский В.А., Семенов А.Л. Теория алгоритмов: основные открытия и приложения. М., Наука, 1987.15-с.

5. В.И.Игошин. Математическая логика и теория алгоритмов. Издательство Саратовского Университета, 1991. C.243.

5 В.И.Игошин. Математическая логика и теория алгоритмов. Издательство Саратовского Университета, 1991. С.243.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.