b. To’g’ridan-to’g’ri tanlash usuli
To’g’ridan-to’g’ri tanlash usuli qandaydir ma’noda to’g’ridan-to’g’ri qo’yish usuliga ziddir. Bu yerda suriladigan elementlar faqat bitta bo’ladi va har bir surishdan keyin elementlarni taqqoslashlar soni bittaga kamayadi. Bu jarayon elementlar tugaguncha davom etadi.
Bizga n ta element berilgan bo’lsin. Biz shu elementlar ichidan eng kichigini topamiz va bu elementni massiv boshidagi element bilan almashtiramiz. Endi esa ikkinchi elementdan boshlab, n-elementgacha bo’lgan n-1 ta elementdan eng kichigini topamiz. Topilgan minimumni qaralayotgan elementlarning boshiga ya’ni ikkinchi element o’rniga qo’yamiz. Ushbu jarayon massiv elementlari tugaguncha davom ettiriladi va natijada massiv elementlari o’sish tartibida saralangan bo’ladi.
To’g’ridan-to’g’ri tanlash orqali saralash usulining C++ dasturlash tilidagi algoritmi uchun misol.
#define _CRT_SECURE_NO_WARNINGS // scanf() ishlashi uchun
#include
// to’g’ridan-to’g’ri tanlash bilan saralash uchun funksiya
void selectionSort(int *num, int size)
{
int min, temp; // minimal elementni qidirish va almashtirish uchun
for (int i = 0; i < size - 1; i++)
{
min = i; // joriy element indeksini saqlaymiz
// i-o’ringa joylashtirish uchun minimum elementni topamiz
for (int j = i + 1; j < size; j++) // i-elementdan keyingilari uchun
{
if (num[j] < num[min]) // minimumdan kichigi bo’lsa,
min = j; // uning indeksini min da saqlaymiz
}
temp = num[i]; // minimum va i-elementlarni almashtiramiz
num[i] = num[min];
num[min] = temp;
}
}
int main()
{
int a[10]; // 10ta elementdan iborat massiv elementni e’lon qilamiz
// massiv elementlari qiymatlarini kiritamiz
for (int i = 0; i < 10; i++)
{
printf("a[%d] = ", i);
scanf("%d", &a[i]);
}
selectionSort(a, 10); // saralash funksiyasini chaqiramiz
// massivning saralangan elementlarini chiqaramiz
for (int i = 0; i<10; i++)
printf("%d ", a[i]);
getchar(); getchar();
return 0;
}
Natija :
|