Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

18-AMELIY

.pdf
Скачиваний:
0
Добавлен:
05.11.2025
Размер:
286.19 Кб
Скачать

18-ámeliy. Sortlaw algoritmleri. Qosıp sortlaw usılı. Tańlap sortlaw usılı. Kóbikli sortlaw usılı.

Jumıstıń maqseti: C++ tilinde massiv elementlerin sortlawdıń tiykarǵı hám eń kóp qollanılatuǵın ápiwayı algoritmlerin úyreniw. Kóbikli (Bubble Sort), Tańlap (Selection Sort) hám Qosıp (Insertion Sort) sortlaw usıllarınıń islew principin túsiniw hám olardı programma kórinisinde ámelge asırıw kónlikpelerin iyelew.

Teoriyalıq maǵlıwmatlar:

Sortlaw (tártiplew) - bul massiv yamasa dizim elementlerin belgili bir tártip (máselen, ósiw yamasa kemeyiw boyınsha) penen qayta jaylastırıw procesi. Sortlaw programmalastırıwda júdá áhmiyetli wazıypa esaplanadı, sebebi tártiplengen maǵlıwmatlar menen islew (mısalı, izlew) ádewir tezirek hám ańsat boladı.

1. Kóbikli sortlaw usılı (Bubble Sort):

oIdeyası: Eń ápiwayı sortlaw algoritmlerinen biri. Ol massivti birneshe márte basınan aqırına shekem qarap shıǵadı. Hár bir ótiwde qaptallas turǵan eki elementti salıstıradı hám eger olar nadurıs tártipte bolsa, orınların almastıradı. Solay etip, eń úlken (yamasa eń kishi) elementler massivtiń aqırına qarap "kóbikshe" sıyaqlı "qalqıp"

shıǵadı.

o Ózgesheligi: Ańsat túsiniwge hám islewge boladı, biraq úlken kólemdegi maǵlıwmatlar ushın júdá áste isleytuǵın, effektivligi tómen algoritm esaplanadı.

2. Tańlap sortlaw usılı (Selection Sort):

oIdeyası: Bul algoritm massivti sortlanǵan hám sortlanbaǵan eki bólimge ajıratadı. Ol sortlanbaǵan bólimnen eń kishi (yamasa eń úlken) elementti "tańlap aladı" hám onı sortlanǵan bólimniń aqırına jaylastıradı. Bul process sortlanbaǵan bólimde element qalmaǵanǵa shekem dawam etedi.

oÓzgesheligi: Kóbikli sortlawǵa qaraǵanda orın almastırıw ámellerin azıraq orınlaydı, biraq salıstırıwlar sanı kóp. Úlken massivler ushın bul da áste isleytuǵın algoritm.

3.Qosıp sortlaw usılı (Insertion Sort):

oIdeyası: Bul algoritm de massivti sortlanǵan hám sortlanbaǵan bólimlerge ajıratadı. Ol sortlanbaǵan bólimnen gezektegi elementti aladı hám onı sortlanǵan bólimdegi óziniń durıs ornına "qosıp"

qoyadı. Onıń ushın sortlanǵan bólimdegi úlkenirek elementler ońǵa jılıstırıladı.

oÓzgesheligi: Az sanlı elementler ushın júdá tez hám effektiv. Derlik sortlanıp turǵan massivler ushın eń jaqsı nátiyje beredi.

Járdemshi funkciya (Massivti ekranǵa shıǵarıw ushın):

Barlıq mısallarımızda massivti sortlawdan aldın hám keyin ekranǵa shıǵarıw ushın tómendegi funkciyadan paydalanamız. Bul kodtı qayta-qayta jazbaw ushın kerek.

#include <iostream>

void printArray(int arr[], int size) { for (int i = 0; i < size; i++) {

std::cout << arr[i] << " ";

}

std::cout << std::endl;

}

Ámeliy bólim:

1-Mısal: Kóbikli sortlaw usılı (Bubble Sort)

#include <iostream>

//Massivti ekranǵa shıǵarıw funkciyası void printArray(int arr[], int size) {

for (int i = 0; i < size; i++) { std::cout << arr[i] << " ";

}

std::cout << std::endl;

}

//Orın almastırıw funkciyası

void swap(int *xp, int *yp) { int temp = *xp;

*xp = *yp; *yp = temp;

}

void bubbleSort(int arr[], int n) {

// Massivtiń barlıq elementleri boyınsha ótiw for (int i = 0; i < n - 1; i++) {

// Hár bir ótiwde qaptallas elementlerdi salıstırıw for (int j = 0; j < n - i - 1; j++) {

// Eger sheptegi element ońdagıdan úlken bolsa...

if (arr[j] > arr[j + 1]) {

// ... olardıń orınların almastırıw swap(&arr[j], &arr[j + 1]);

}

}

}

}

int main() {

int arr[] = {64, 34, 25, 12, 22, 11, 90}; int n = sizeof(arr) / sizeof(arr[0]);

std::cout << "Sortlawdan aldınǵı massiv: \n"; printArray(arr, n);

bubbleSort(arr, n);

std::cout << "\nKóbikli usılda sortlanǵan massiv: \n"; printArray(arr, n);

return 0;

}

2-Mısal: Tańlap sortlaw usılı (Selection Sort)

#include <iostream>

void printArray(int arr[], int size) { for (int i = 0; i < size; i++) {

std::cout << arr[i] << " ";

}

std::cout << std::endl;

}

void swap(int *xp, int *yp) { int temp = *xp;

*xp = *yp; *yp = temp;

}

void selectionSort(int arr[], int n) { int i, j, min_idx;

// Sortlanbaǵan bólimniń shegarasın jılıstırıp barıw for (i = 0; i < n - 1; i++) {

//Sortlanbaǵan bólimnen eń kishi elementti tabıw min_idx = i;

for (j = i + 1; j < n; j++) { if (arr[j] < arr[min_idx])

min_idx = j;

}

//Tabılǵan eń kishi elementti birinshi element penen

almastırıw

swap(&arr[min_idx], &arr[i]);

}

}

int main() {

int arr[] = {64, 25, 12, 22, 11}; int n = sizeof(arr) / sizeof(arr[0]);

std::cout << "Sortlawdan aldınǵı massiv: \n"; printArray(arr, n);

selectionSort(arr, n);

std::cout << "\nTańlap alıw usılında sortlanǵan massiv: \n"; printArray(arr, n);

return 0;

}

3-Mısal: Qosıp sortlaw usılı (Insertion Sort)

#include <iostream>

void printArray(int arr[], int size) { for (int i = 0; i < size; i++) {

std::cout << arr[i] << " ";

}

std::cout << std::endl;

}

void insertionSort(int arr[], int n) { int i, key, j;

// Birinshi elementti sortlanǵan dep esaplap, ekinshisinen baslaymız

for (i = 1; i < n; i++) {

key = arr[i]; // Gezektegi elementti "qosıw" ushın saqlap

qoyamız

j = i - 1;

//Sortlanǵan bólimdegi elementlerdi 'key' den úlken bolsa, ońǵa jılıstıramız

while (j >= 0 && arr[j] > key) { arr[j + 1] = arr[j];

j = j - 1;

}

//'key' elementin óziniń durıs ornına qoyamız

arr[j + 1] = key;

}

}

int main() {

int arr[] = {12, 11, 13, 5, 6};

int n = sizeof(arr) / sizeof(arr[0]);

std::cout << "Sortlawdan aldınǵı massiv: \n"; printArray(arr, n);

insertionSort(arr, n);

std::cout << "\nQosıp sortlaw usılındaǵı massiv: \n"; printArray(arr, n);

return 0;

}

Ámeliy tapsırmalar:

1.Kemeyiw tártibinde sortlaw: Joqarıdaǵı úsh mısaldıń qálegen birin (mısalı, Kóbikli sortlaw) ózgertip, massivti ósiw tártibinde emes, al kemeyiw tártibinde sortlaytuǵın etip qayta dúziń. (Kórsetpe: Salıstırıw belgisin (>) ózgertiw jetkilikli boladı).

2.Paydalanıwshı kirgizgen massiv: Paydalanıwshıdan 5 pútin san kirgiziwin soraytuǵın hám sol sanlardı massivke jazatuǵın programma dúziń. Keyin,

Tańlap sortlaw usılın qollanıp, kirgizilgen massivti tártipleń hám nátiyjeni ekranǵa shıǵarıń.

3.Háriplerdi sortlaw: Elementleri char tipindegi belgilerden ibarat bolǵan massiv dúziń (mısalı, {'k', 'a', 'r', 'a', 'k', 'a', 'l', 'p', 'a', 'k'}). Qosıp sortlaw (Insertion Sort) usılın paydalanıp, usı massivti alfavit tártibinde sortlań.

4.Algoritmlerdi salıstırıw (Qıyınlaw tapsırma): Úlken (mısalı, 1000 elementli) massivti tosınnan (random) sanlar menen toltırıń. Keyin, joqarıdaǵı úsh algoritmniń hár biri ushın usı massivti sortlawǵa ketken waqıttı ólsheń hám salıstırıń. Waqıttı ólshew ushın C++ tiń <chrono> kitapxanasınan paydalanıwıńızǵa boladı. Bul tapsırma qaysı algoritmniń qanshelli tez yamasa áste isleytuǵının ámeliyatta kóriwge járdem beredi.

Соседние файлы в предмете Программирование на C++