Добавил:
bekan
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:1-semestr / 13-LEKCIYA
.pdf
13-lekciya. Sortlaw algoritmleri. Kóbikli sortlaw usılı. Qosıp sortlaw usılı.
Tańlap sortlaw usılı.
Joba:
1. Kirisiw: Sortlaw algoritmleri haqqında ulıwma túsinik
2. Kóbikli sortlaw usılı (Bubble Sort)
3. Tańlap sortlaw usılı (Selection Sort)
4. Qosıp (kirgizip) sortlaw usılı (Insertion Sort)
5. Úsh algoritmdi salıstırıw hám juwmaqlaw
1. Kirisiw: Sortlaw algoritmleri haqqında ulıwma túsinik
Sortlaw degenimiz ne?
Sortlaw (yamasa tártiplew) – bul maǵlıwmatlar toplamınıń (mısalı, massiv
elementleriniń) elementlerin belgili bir tártip (kóbinese, ósiw yamasa kemeyiw
tártibi) boyınsha qayta jaylastırıw procesi. Mısalı, [5, 1, 4, 2, 8] massivin ósiw
tártibinde sortlaw nátiyjesinde [1, 2, 4, 5, 8] kórinisine keledi.
Ne ushın sortlaw zárúr?
Sortlaw programmalastırıwdıń fundamental túsiniklerinen biri bolıp, kóp
máselelerdi sheshiwde zárúrli rol oynaydı:
Maǵlıwmatlardı izlewdi tezlestiriw: Tártiplengen massivte maǵlıwmattı izlew
(mısalı, Binar izlew arqalı) tártiplenbegen massivke qaraǵanda álleqayda tezirek
orınlanadı.
Maǵlıwmatlardı ańsat analizlew: Tártiplengen maǵlıwmatlar menen islew
ańsatıraq. Mısalı, eń kishi yamasa eń úlken elementi tabıw, mediananı esaplaw,
dublikatlardı anıqlaw hám t.b.
Basqa algoritmlerdiń tiykarı: Kóp ǵana quramalı algoritmler islewden aldın
maǵlıwmatlardı sortlawdı talap etedi.
Algoritmlerdiń natiyjeliligin bahalaw (Time Complexity)
Hár qıylı sortlaw algoritmleri bar hám olar islew waqtı hám paydalanatuǵın yad
kólemi boyınsha bir-birinen parıq qıladı. Algoritmniń islew tezligi kóbinese waqıt
quramalılıǵı (Time Complexity) menen bahalanadı hám "O-úlken" belgilewi
(Big O Notation) arqalı kórsetiledi. Bul belgileniw maǵlıwmatlar sanı (n) artqan
sayın algoritmniń islew waqtı qanshelli tez ósiwin bildiredi. Mısalı, O(n2)
quramalılıqqa iye bolǵan algoritm O(n log n) ǵa qaraǵanda ádewir áste isleytuǵının
ańlatadı.

Búgin biz O(n2) quramalılıqqa iye bolǵan eń ápiwayı úsh algoritmdi kórip
shıǵamız.
2. Kóbikli sortlaw usılı (Bubble Sort)
Bul eń ápiwayı hám intuitiv túsinikli sortlaw algoritmlerinen biri. Onıń atı jeńil
elementlerdiń (mısalı, kishi sanlardıń) massivtiń basına qaray "kóbikshe" sıyaqlı
"qalqıp" shıǵıwınan alınǵan.
Islew principi
Algoritm massiv boylap bir neshe márte ótedi. Hárbir ótiwde ol jaqın turǵan eki
elementti salıstıradı hám eger olar nadurıs tártipte bolsa, orınların almastıradı. Bul
process massiv tolıq tártiplengenine shekem dawam etedi.
Algoritmniń basqıshları
1. Birinshi hám ekinshi elementti salıstırıń. Eger birinshisi ekinshisinen úlken bolsa,
orınların almastırıń.
2. Ekinshi hám úshinshi elementti salıstırıń hám kerek bolsa almastırıń.
3. Usı processti massivtiń aqırına shekem dawam ettiriń. Usı birinshi ótiwden keyin
eń úlken element massivtiń eń aqırǵı poziciyasına "shógip" qaladı.
4. Joqarıdaǵı 1-3 basqıshlardı massivtiń aqırǵı tártiplengen bólegin esapqa almay,
tolıq tártiplenip bolǵanǵa shekem tákirarlań.
Mısal: Massiv [5, 1, 4, 2]
1-ótiw:
o (5, 1) -> [1, 5, 4, 2] (almastırıladı)
o (5, 4) -> [1, 4, 5, 2] (almastırıladı)
o (5, 2) -> [1, 4, 2, 5] (almastırıladı). Eń úlken element (5) óz ornında.
2-ótiw:
o (1, 4) -> [1, 4, 2, 5] (ózgerissiz)
o (4, 2) -> [1, 2, 4, 5] (almastırıladı). Kelesi úlken element (4) óz ornında.
3-ótiw:
o (1, 2) -> [1, 2, 4, 5] (ózgerissiz). Massiv sortlandı.
C++ tilindegi realizaciyası
#include <iostream>
#include <utility> // std::swap ushın
void bubbleSort(int arr[], int n) {
for (int i = 0; i < n - 1; ++i) {
// Hárbir ótiwden keyin aqırǵı i-elementler óz ornında boladı
for (int j = 0; j < n - i - 1; ++j) {
// Jaqın turǵan elementlerdi salıstırıw

if (arr[j] > arr[j + 1]) {
std::swap(arr[j], arr[j + 1]);
}
}
}
}
void printArray(int arr[], int size) {
for (int i = 0; i < size; i++)
std::cout << arr[i] << " ";
std::cout << std::endl;
}
int main() {
int arr[] = {64, 34, 25, 12, 22, 11, 90};
int n = sizeof(arr) / sizeof(arr[0]);
bubbleSort(arr, n);
std::cout << "Sortlanǵan massiv: ";
printArray(arr, n);
return 0;
}
Analizi
Waqıt quramalılıǵı: Eń jaman hám orta jaǵdayda - O(n
2
) . Eń jaqsı jaǵdayda
(eger massiv aldınnan sortlanǵan bolsa) - O(n) (eger optimallastırılǵan versiyası
qollanılsa).
Yad quramalılıǵı: O(1), sebebi qosımsha yad talap etilmeydi.
Qolaylıqları: Realizaciyası júdá ápiwayı hám túsinikli.
Kemshilikleri: Kishi kólemdegi maǵlıwmatlar ushın qolaylı bolsa da, úlken
massivler ushın júdá áste isleytuǵın natiyjesiz algoritm esaplanadı.
3. Tańlap sortlaw usılı (Selection Sort)
Bul algoritm da O(n2) quramalılıqqa iye, biraq onıń islew principi basqasha. Atı
aytıp turǵanınday, ol massivtiń tártiplenbegen bóleginen izbe-iz eń kishi (yamasa
eń úlken) elementti "tańlap" alıp, onı tártiplengen bólektiń aqırına jaylastıradı.
Islew principi
Algoritm massivti eki bólekke ajıratadı:
1. Sortlanǵan bólek: Basında bos bolıp, massivtiń basında jaylasadı.
2. Sortlanbaǵan bólek: Basında pútkil massivti óz ishine alıp, massivtiń qalǵan
bólegin quraydı.
Algoritm sortlanbaǵan bólekten eń kishi elementti tabadı hám onı sortlanbaǵan
bólektiń birinshi elementi menen almastıradı. Usılayınsha, bul element sortlanǵan
bólekke ótedi.
Algoritmniń basqıshları

1. Massivtiń sortlanbaǵan bóleginen eń kishi elementti tabıń (basında bul pútkil
massiv).
2. Tabılǵan eń kishi elementti sortlanbaǵan bólektiń eń basınǵı elementi menen
almastırıń.
3. Sortlanǵan bólektiń shegarasın bir poziciyaǵa jılıstırıń.
4. Massiv tolıq sortlanǵanǵa shekem 1-3 basqıshlardı tákirarlań.
Mısal: Massiv [64, 25, 12, 22]
1-ótiw:
o Eń kishi element - 12.
o 12 ni birinshi element 64 penen almastırıń -> [12, 25, 64, 22].
2-ótiw:
o Qalǵan sortlanbaǵan bólekten [25, 64, 22] eń kishi element - 22.
o 22 ni sortlanbaǵan bólektiń basındaǵı 25 penen almastırıń -> [12, 22, 64, 25].
3-ótiw:
o Qalǵan sortlanbaǵan bólekten [64, 25] eń kishi element - 25.
o 25 ti 64 penen almastırıń -> [12, 22, 25, 64]. Massiv sortlandı.
C++ tilindegi realizaciyası
#include <iostream>
#include <utility>
void selectionSort(int arr[], int n) {
for (int i = 0; i < n - 1; ++i) {
// Eń kishi elementtiń indeksin tabıw
int min_idx = i;
for (int j = i + 1; j < n; ++j) {
if (arr[j] < arr[min_idx]) {
min_idx = j;
}
}
// Eń kishi elementti házirgi poziciyaǵa almastırıw
std::swap(arr[min_idx], arr[i]);
}
}
void printArray(int arr[], int size) {
for (int i = 0; i < size; i++)
std::cout << arr[i] << " ";
std::cout << std::endl;
}
int main() {
int arr[] = {64, 25, 12, 22, 11};
int n = sizeof(arr) / sizeof(arr[0]);
selectionSort(arr, n);
std::cout << "Sortlanǵan massiv: ";
printArray(arr, n);
return 0;

}
Analizi
Waqıt quramalılıǵı: Bárqulla O(n
2
) (eń jaqsı, orta hám eń jaman jaǵdayda da).
Sebebi, massiv sortlanǵan bolsa da, ol hárbir ótiwde eń kishi elementti tabıw ushın
pútkil qalǵan bólekti tekserip shıǵadı.
Yad quramalılıǵı: .
Qolaylıqları: Ápiwayı realizaciya. Almastırıwlar sanı Kóbikli sortlawǵa
qaraǵanda azıraq (O(n) márte), bul jazıw operaciyaları qımbat bolǵan jaǵdaylarda
paydalı bolıwı múmkin.
Kemshilikleri: Kóbikli sortlaw sıyaqlı, úlken maǵlıwmatlar ushın júdá áste.
4. Qosıp (kirgizip) sortlaw usılı (Insertion Sort)
Bul algoritm kóbinese adamlardıń qolındaǵı oyınların sortlaw usılına uqsatıladı.
Algoritm massivti sortlanǵan hám sortlanbaǵan eki bólekke ajıratıp isleydi. Ol
sortlanbaǵan bólekten gezektegi elementti alıp, onı sortlanǵan bólektegi durıs
ornına "qosıp" (kirgizip) qoyadı.
Islew principi
Massivtiń birinshi elementi sortlanǵan dep esaplanadı. Sońınan ekinshi element
alınadı hám birinshisi menen salıstırılıp, durıs orınǵa jaylastırıladı. Keyin úshinshi
element alınadı hám aldınǵı sortlanǵan eki element arasınan óziniń durıs ornın
tabadı hám t.b.
Algoritmniń basqıshları
1. Massivtiń birinshi elementin sortlanǵan dep esaplań.
2. Ekinshi elementten baslap (i=1 den n-1 ge shekem) hárbir elementti gezek penen
key (gilt) sıpatında alıń.
3. key elementin onnan aldınǵı sortlanǵan bólektegi elementler menen salıstırıń.
4. key den úlken bolǵan elementlerdi bir poziciya ońǵa jılıstırıń, usılayınsha key
ushın bos orın ashılsın.
5. key elementin payda bolǵan bos orınǵa jaylastırıń.
6. Barlıq elementler sortlanǵanǵa shekem bul processti tákirarlań.
Mısal: Massiv [12, 11, 13, 5, 6]
Baslanǵısh: [12] sortlanǵan, [11, 13, 5, 6] sortlanbaǵan.
Adım 1: key = 11. 12 > 11, sonlıqtan 12 ni ońǵa jılıstırıp, 11 di onıń ornına
qoyamız -> [11, 12, 13, 5, 6].
Adım 2: key = 13. 12 < 13, hesh nárse ózgermeydi -> [11, 12, 13, 5, 6].

Adım 3: key = 5. 13>5, 12>5, 11>5. Barlıq úsh elementti ońǵa jılıstırıp, 5 ti
basına qoyamız -> [5, 11, 12, 13, 6].
Adım 4: key = 6. 13>6, 12>6, 11>6, biraq 5<6. 13, 12, 11 di ońǵa jılıstırıp, 6 nı 5
ten keyin qoyamız -> [5, 6, 11, 12, 13]. Massiv sortlandı.
C++ tilindegi realizaciyası
#include <iostream>
void insertionSort(int arr[], int n) {
for (int i = 1; i < n; ++i) {
int key = arr[i];
int j = i - 1;
// key den úlken elementlerdi bir poziciya ońǵa jılıstırıw
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j = j - 1;
}
arr[j + 1] = key;
}
}
void printArray(int arr[], int size) {
for (int i = 0; i < size; i++)
std::cout << arr[i] << " ";
std::cout << std::endl;
}
int main() {
int arr[] = {12, 11, 13, 5, 6};
int n = sizeof(arr) / sizeof(arr[0]);
insertionSort(arr, n);
std::cout << "Sortlanǵan massiv: ";
printArray(arr, n);
return 0;
}
Analizi
Waqıt quramalılıǵı: Eń jaman hám orta jaǵdayda - O(n
2
). Biraq, eń jaqsı
jaǵdayda (massiv derlik sortlanǵan bolsa) waqıt quramalılıǵı O(n) ǵa jaqın boladı.
Yad quramalılıǵı: O(1).
Qolaylıqları: Ápiwayı realizaciya. Kishi kólemdegi massivler ushın júdá natiyjeli.
Onlayn rejimde isley aladı, yaǵnıy jańa maǵlıwmatlar kelip tursa, olardı bar
sortlanǵan toplamǵa tez qosıw múmkin.
Kemshilikleri: Úlken hám tártipsiz jaylasqan maǵlıwmatlar ushın natiyjesiz.
5. Úsh algoritmdi salıstırıw hám juwmaqlaw

Kóbikli sortlaw tiykarınan oqıw hám úyreniw maqsetleri ushın qollanıladı, sebebi
onıń ápiwayı logikası sortlawdıń tiykarǵı ideyasın túsiniwge járdem beredi.
Tańlap sortlaw da oqıw ushın jaqsı, biraq onıń turaqlı O(n
2
) natiyjeliligi onı
ámeliyatta az qollanılatuǵın etedi.
Qosıp sortlaw bul úsh algoritm ishinde eń paydalısı esaplanadı. Kishi kólemdegi
maǵlıwmatlar (n < 20) ushın tez isleytuǵınlıǵı hám derlik tártiplengen massivlerde
joqarı ónimdarlıǵı sebepli, ol quramalı sortlaw algoritmleriniń (mısalı, Tez sortlaw)
bir bólegi retinde de qollanılıwı múmkin.
Bul úsh algoritm sortlaw dúnyasına kirisiw ushın ájayıp baslanǵısh bolıp tabıladı.
Соседние файлы в папке 1-semestr
