doim birinchi 1 sonini ikkinchi 1 sonidan doim oldin joylashtirsa, bu algoritm turg’un saralovchi algoritm deyiladi.
Yana haqli savol tug’ilishi mumkin, “Bu narsaning kimga keragi bor, baribir natija 1 1 2 3 4 5 bo’ladiku?” degan. Albatta, bu holatda turg’unlik ahamiyati sezilmasligi mumkin. Lekin, aytaylik siz biror korxona ishchilari ma’lumotlarini ularning nomiga ko’ra saralagan paytda turg’unlik kerak bo’lib qolishi mumkin. Ya’ni, birinchi Nodirbek ma’lumotlari, ikkinchi Nodirbek ma’lumotlaridan keyin turishi kerak degan kabi.
Saralash algoritmlari ichidagi Quick Sort ko’p hollarda Merge yoki Heap sortdan tez ishlagani bilan u turg’un saralash algoritmi hisoblanmaydi (Turg’un holga keltirishning iloji bor).
Ko’rib turgangizdek har xil algoritmlar ishlash tezliklari bir xil bo’lgani bilan bizga turli holatlarda aynan bir turdagi algoritm kerak bo’lib qolishi va u biz tuzayotgan tizim samaradorligiga ta’sir qilishi mumkin. Shu sababdan, turli xil saralash algoritmlari ishlashini o’rganish va tushunish professional dasturchi uchun muhim hislatlardan biri hisoblanadi.
To’gridan to’g’ri tanlash orqali saralash algoritmi.
To’gridan to’g’ri tanlash orqali saralash algoritmining ishlash prinsipi quyidagicha bo’ladi Aytaylik massiv elementlarini osish tartibida saralash kk bo’lsin.
Massivning birinchi elementini minimum deb qabul qiladi.
Minimalni ikkinchi element bilan solishtiring. Agar ikkinchi element minimaldan kichik bo'lsa, ikkinchi elementni minimal deb belgilang.Minimalni uchinchi element bilan solishtiring. Shunga qaramay, agar uchinchi element kichikroq bo'lsa, uchinchi elementga minimal qiymatni belgilang, aks holda hech narsa qilmang. Jarayon oxirgi elementga qadar davom etadi.
Har bir iteratsiyadan so'ng, minimal tartiblashtirilmagan ro'yxatning old qismiga joylashtiriladi.
Har bir iteratsiya uchun indekslash birinchi tartiblanmagan elementdan boshlanadi. 1 dan 3 gacha bo'lgan bosqichlar barcha elementlar o'zlarining to'g'ri joylariga joylashtirilguncha takrorlanadi.
Ushbu algoritmni grafik shaklda ifodalanishi quyidagicha bo’ladi.
Tanlovni togridan togri saralash algoritmida ro'yxat ikki qismga bo'linadi. Bir qismda barcha elementlar tartiblangan, boshqa qismida esa saralanmagan. Dastlab biz massivdan maksimal yoki minimal ma'lumotlarni olamiz. Ma'lumotni olgandan so'ng biz birinchi o'rindagi ma'lumotlarni minimal ma'lumotlar bilan almashtirib, uni ro'yxatning boshiga joylashtiramiz. Amalga oshirilgandan so'ng, massiv kichikroq bo'ladi. Shunday qilib, bu saralash texnikasi amalga oshiriladi.
Bunda ushbu alghoritm bilan tuzilgan dasturga kiruvchi ma’lumot quyidagicha bo’lsa:
Input: 19 5 22 12 2
Dastur yordamida saralangan malumot quyidagicha bo;ladi:
Output: 2 5 12 19 22
Ushbu algoritm bilan dastur dastur ishlashi ancha optimallashadi. Ammo yuqorida aytilgandek algoritmlar har doim ham foydali emas.
Tanlov saralash hamma narsa allaqachon tartiblanganligini tekshirishda yaxshi bo'lishi mumkin. Xotira maydoni cheklangan bo'lsa ham foydalanish yaxshi. Buning sababi, boshqa saralash algoritmlaridan farqli o'laroq, saralashda saralash oxirigacha narsalarni almashtirmaydi, natijada vaqtinchalik saqlash joyi kamroq ishlatiladi.
Amaliy qism.
Ushbu algoritm yordamida yozilgan dastur kodi quyidagicha bo’ladi:
#include
using namespace std;
void swapping(int &a, int &b) {
int temp;
temp = a;
a = b;
b = temp;
}
void display(int *array, int size) {
for(int i = 0; i
cout << array[i] << " ";
cout << endl;
}
void selectionSort(int *array, int size) {
int i, j, imin;
for(i = 0; i
imin = i; //eng kichik element indeksini olamiz
for(j = i+1; j
if(array[j] < array[imin])
imin = j;
//to'gri pozitgsiyaga joylashtiramiz
swap(array[i], array[imin]);
}
}
int main() {
int n;
cout << "Massiv elementlari sonini kiriting: ";
cin >> n;
int arr[n]; //kiritilgan elementlar soni bn massiv yaratamiz
cout << "elementlarni kiriting" << endl;
for(int i = 0; i
cin >> arr[i];
}
cout << "saralanmagan massiv: ";
display(arr, n);
selectionSort(arr, n);
cout << "saralangan massiv: ";
display(arr, n);
}
DASTUR ISHLASHINI TEKSHIRIB KORAMIZ.
Dastlab massiv uzunligi kiritish:
Keyin esa ushbu massiv ekementlarini kiritamiz
Va kiritishdan keyin dastur bizga massiv elementlarini o’sish tartibida joylashtirib beradi. Va ekranga quyidagi natija chiqariladi.
Natijada:
Biz kiritgan massiv: [12, 10, 25, 8, 3]
Saralangan massiv: [3, 8, 10, 12, 25]
Xulosa.
Tanlov saralash hamma narsa allaqachon tartiblanganligini tekshirishda yaxshi bo'lishi mumkin. Xotira maydoni cheklangan bo'lsa ham foydalanish yaxshi. Buning sababi, boshqa saralash algoritmlaridan farqli o'laroq, saralashda saralash oxirigacha narsalarni almashtirmaydi, natijada vaqtinchalik saqlash joyi kamroq ishlatiladi.
Foydalanilgan adabiyotlar:
https://medium.com sayti
https://www.tutorialspoint.com/ sayti
https://www.programiz.com/ sayti
https://www.geeksforgeeks.org/ sayti
Do'stlaringiz bilan baham: |