THEORETICAL ASPECTS IN THE FORMATION OF
PEDAGOGICAL SCIENCES
International scientific-online conference
28
C++ TILIDA MA'LUMOTLARNI SARALASHNING TURLI USULLARINI
JORIY QILISH VA TAQQOSLASH
Shermatova Xilola Mirzayevna
Fargʻona davlat universiteti Axborot texnologiyalari kafedrasi dotsenti
shermatovahilola1978@gmail.com
Mubina Tursunaliyeva Xursanali qizi
Fargʻona davlat universiteti Axborot tizimlari va
texnologiyalar yo‘nalishi
1-kurs talabasi
https://doi.org/10.5281/zenodo.15123156
Annotatsiya
Ushbu maqolada C++ dasturlash tilida ma'lumotlarni saralashning turli
usullari, ularning ishlash tamoyillari va samaradorligi ko‘rib chiqiladi. Maqolada
Bubble
Sort, Selection Sort, Insertion Sort, Merge Sort, Quick Sort va STL
(Standard Template Library) qatoridagi sort() funksiyasi kabi saralash
algoritmlarining kod misollari keltirilgan. Har bir algoritmning tezligi (Big-O
analiz), xotira samaradorligi va amaliy qo‘llanilishi bo‘yicha taqqoslanadi.
Shuningdek, har xil saralash usullarining kichik hajmdagi va katta hajmdagi
ma'lumotlar bilan ishlashdagi samaradorligi haqida fikr yuritiladi.
Аннотация
В данной статье рассматриваются различные методы сортировки
данных в языке программирования C++, их принципы работы и
эффективность. Описаны и проанализированы такие алгоритмы, как
Bubble Sort, Selection Sort, Insertion Sort, Merge Sort, Quick Sort, а также
встроенная функция sort() из Standard Template Library (STL). Каждый
алгоритм сравнивается по временной сложности (Big-O анализ),
эффективности использования памяти и применимости в реальных
задачах. Также обсуждается их производительность при работе с
небольшими и большими объемами данных.
Abstract
This article explores various sorting algorithms in C++, their working
principles, and efficiency. The study covers Bubble Sort, Selection Sort, Insertion
Sort, Merge Sort, Quick Sort, and the built-in sort() function from the Standard
Template Library (STL). Each algorithm is analyzed based on time complexity
(Big-O analysis), memory usage, and practical applications. Additionally, their
performance is evaluated for small and large datasets.
Kalit so‘zlar:
C++ saralash, saralash algoritmlari, Pufakcha saralash, Tanlab
saralash, Qo‘yish usuli bilan saralash, Birlashtirish usuli bilan saralash, Tezkor
THEORETICAL ASPECTS IN THE FORMATION OF
PEDAGOGICAL SCIENCES
International scientific-online conference
29
saralash, STL sort() funksiyasi, algoritm murakkabligi, vaqt murakkabligi,
samaradorlik, ma'lumot tuzilmalari, hisoblash unumdorligi.
Ключевые слова:
C++ сортировка, алгоритмы сортировки,
пузырьковая сортировка, сортировка выбором, сортировка вставками,
сортировка слиянием, быстрая сортировка, STL sort(), сложность
алгоритма, временная сложность, эффективность, структуры данных,
вычислительная производительность.
Keywords:
C++ sorting, sorting algorithms, Bubble Sort, Selection Sort,
Insertion Sort, Merge Sort, Quick Sort, STL sort(), algorithm complexity, time
complexity, efficiency, data structures, computational performance.
Saralash algoritmlari kompyuter fanining muhim yo‘nalishlaridan biri
bo‘lib, ma’lumotlarni tartibga solish va qidiruv jarayonlarini optimallashtirishda
muhim rol o‘ynaydi. C++ dasturlash tilida turli saralash algoritmlarini joriy qilish
va ularni taqqoslash orqali eng samarali usulni tanlash mumkin. Saralash
algoritmlari turli mezonlar bo‘yicha baholanadi. Vaqt murakkabligi
(O(n²), O(n
log n) va h.k.),
xotira murakkabligi
(Qo‘shimcha xotira talab qilinishi yoki in-place
saralash),
eng yaxshi, o‘rtacha va eng yomon holatlardagi ishlash samaradorligi
kabi.
Ushbu maqolada C++ tilida saralash algoritmlarining dasturiy ifodasi va
ularning samaradorlik jihatlari tahlil qilinadi.
C++ tilida saralash usullari.
Bubble Sort (Pufakcha saralash) -
eng oddiy saralash usullaridan biri
bo‘lib, har bir juft elementlarni taqqoslab, ularni tartibga keltiradi.
Vaqt murakkabligi
-
Eng yomon holat: O(n²) - agar massiv teskari tartibda
bo‘lsa, hamma elementlar almashtiriladi. Eng yaxshi holat: O(n) - agar massiv
allaqachon saralangan bo‘lsa, almashtirildi bayrog‘i tufayli faqat bitta sikl
bajariladi.
#include <iostream>
#include <vector>
using namespace std;
void bubbleSort(std::vector<int>& arr) {
int n = arr.size();
bool almashtirildi;
for (int i = 0; i < n - 1; i++) {
almashtirildi = false;
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
THEORETICAL ASPECTS IN THE FORMATION OF
PEDAGOGICAL SCIENCES
International scientific-online conference
30
swap(arr[j], arr[j + 1]);
almashtirildi = true;
}
}
if (!almashtirildi) break;
}
}
Selection sort (tanlab saralash) -
Selection Sort har safar eng kichik
elementni topib, uni massiv boshiga joylashtirish orqali ishlaydi. Vaqt
murakkabligi: Eng yomon holat: O(n²). O‘rtacha holatda: O(n²). Eng yaxshi holat:
O(n²). Bu saralash usuli Bubble Sort bilan bir xil vaqt murakkabligiga ega, lekin
almashtirishlar soni kamroq bo‘lgani uchun ko‘proq optimal.
void selectionSort(std::vector<int>& arr) {
int n = arr.size();
for (int i = 0; i < n - 1; i++) {
int minIndex = i;
for (int j = i + 1; j < n; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
std::swap(arr[i], arr[minIndex]);
}
}
Insertion Sort (Qo‘yish orqali saralash) -
Insertion Sort yangi
elementlarni o‘z o‘rniga qo‘yish orqali saralashni amalga oshiradi. Vaqt
murakkabligi: Eng yomon holat: O(n²). Eng yaxshi holat: O(n) (massiv oldindan
saralangan bo‘lsa). Kichik hajmdagi massivlar uchun yaxshi ishlaydi. Qisman
saralangan massivlar uchun juda samarali.
void insertionSort(std::vector<int>& arr) {
int n = arr.size();
for (int i = 1; i < n; i++) {
int key = arr[i];
int j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j--;
THEORETICAL ASPECTS IN THE FORMATION OF
PEDAGOGICAL SCIENCES
International scientific-online conference
31
}
arr[j + 1] = key;
}
}
Merge Sort (Bo‘lish va qo‘shish usuli) -
Merge Sort rekursiv yondashuv
asosida massivni ikkiga bo‘lib, keyin saralab birlashtiradi. Vaqt murakkabligi:
Eng yomon holat: O(n log n). Eng yaxshi holat: O(n log n)
void merge(std::vector<int>& arr, int left, int mid, int right) {
int i = left, j = mid + 1, k = 0;
std::vector<int> temp(right - left + 1);
while (i <= mid && j <= right) {
if (arr[i] <= arr[j])
temp[k++] = arr[i++];
else
temp[k++] = arr[j++];
}
while (i <= mid) temp[k++] = arr[i++];
while (j <= right) temp[k++] = arr[j++];
for (int i = left, k = 0; i <= right; i++, k++) arr[i] = temp[k];
}
void mergeSort(std::vector<int>& arr, int left, int right) {
if (left < right) {
int mid = left + (right - left) / 2;
mergeSort(arr, left, mid);
mergeSort(arr, mid + 1, right);
merge(arr, left, mid, right);
}
}
STL sort() funksiyasi -
C++ STL kutubxonasidagi sort() funksiyasi Quick
Sort, Heap Sort va Insertion Sort kombinatsiyasidan foydalanadi. Vaqt
murakkabligi: O‘rtacha holat: O(n log n).
#include <algorithm>
std::sort(arr.begin(), arr.end());
Xulosa
Keltirilgan turli xil saralash algoritmlari – Bubble Sort, Selection Sort,
Insertion Sort, Merge Sort va Quick Sort – har biri o‘ziga xos ishlash printsipiga
ega bo‘lib, ularning samaradorligi va vaqt murakkabligi bir-biridan farq qiladi.
THEORETICAL ASPECTS IN THE FORMATION OF
PEDAGOGICAL SCIENCES
International scientific-online conference
32
Oddiy algoritmlar, masalan, Bubble Sort va Selection Sort, kichik hajmdagi
ma’lumotlar uchun mos bo‘lsa-da, katta hajmdagi ma’lumotlar bilan ishlashda
samarador emas. Shu bilan birga, Merge Sort va Quick Sort kabi ilg‘or usullar
katta hajmdagi ma’lumotlar uchun ancha samarali hisoblanadi. STL
kutubxonasidagi sort() funksiyasi zamonaviy va optimallashtirilgan usullardan
foydalanib, eng yaxshi natijalarni taqdim etadi. Saralash algoritmlarining vaqt
murakkabligi va samaradorligi ularni tanlashda muhim ahamiyat kasb etadi,
chunki ular ma’lumotlar tuzilmasi va hisoblash unumdorligiga bevosita ta’sir
ko‘rsatadi. Optimal algoritmni tanlash bilan dastur ishlash tezligi va
resurslardan foydalanish samaradorligini oshirish mumkin.
Foydalanilgan adabiyotlar:
1.
Cormen, T. "Introduction to Algorithms" – MIT Press, 2009.
2.
Meyers, S. "Effective STL" – Addison-Wesley, 2001.
3.
Stroustrup, B. "The C++ Programming Language" – Addison-Wesley, 2013.
4.
cplusplus.com
5.
GeeksforGeeks
