Sıralama alqoritmləri - Daxil etmə üsulu (Insertion sort)

Salam. Bu gün növbəti alqoritmi, yəni, "Insertion Sort"-u istifadə edərək massivimizi sıralamaya çalışacağıq. Alqoritmi ilk öncə sözlə təsvir edərək başlayaq. Aşağıdakı şəkildə də görüldüyü kimi massivin elementləri iki hissəyə bölünüb. Birinci hissədə (boz rəngli) sıralanmış digər hissədə isə (ağ rəngli) massivin digər elementləri (ilkin formaya uyğun) yerləşib. Hər dövürdə sağ tərəfdəki elementlərdən biri götürülərək sol tərəfədə uyğun mövqeyə əlavə edilir. Sol tərəfdəki elementlər artıq sıralı olduğundan əlavə etmə zamanı bütün elementləri müqayisə etməyə ehtiyac yoxdur. Daha aydın olması üçün aşağıdakı nümunəyə baxaq.
Qeyd: İsifadə olunan alqoritm  https://www.csharpstar.com/csharp-algorithms/ saytından götürülüb.



class Program
{
static void Main(string[] args)
{
//5 elementdən ibarət "array" massiv elan edirik
int[] array = new int[5] { 83, 12, 3, 34, 60 };
int i;
//Massivi sıralamazdan öncə ekrana yazdıraq.
Console.WriteLine("The Array is :");
for (i = 0; i < 5; i++)
{
Console.WriteLine(array[i]);
}
//Massiv sıralanır
Insertsort(array, 5);
//Massiv sıralamadan sonra ekrana yazdırılır.
Console.WriteLine("The Sorted Array is :");
for (i = 0; i < 5; i++)
{
Console.WriteLine(array[i]);
}
Console.ReadLine();
}
static void Insertsort(int[] data, int n)
{
//Dövürün sayını müəyyən edəcək dəyişənlər elan edilir
int i, j;
for (i = 1; i < n; i++)
{
//İlk olaraq massivin 1-ci indeksli(yəni ikinci elementi) elementi götürülərək özündən əvvəlki
//elementdən kiçik olması yoxlanılır
int item = data[i];
//Dövür zamanı yeni elementin daxil edilməsini yoxlamaq üçün bu dəyişəndən istifadə olunacaq
int ins = 0;
//Hər dəfə dövür ondan əvvəlki dövrün cari qiymətindən bir çıxılaraq başlayır və sıfırncı indeksli
//elementə qədər davam edir. Əgər yeni bir element daxil edilərsə dövrdən çıxılır
for (j = i - 1; j >= 0 && ins != 1;)
{
//i indeksli elementin, sıralanmış elementlərdən kiçik olması yoxlanılır.
if (item < data[j])
{
//Kiçik olduğu halda cari elementdən (data[j]) önə əlavə edilir (və ya yerləri dəyişdirilir)
data[j + 1] = data[j];
j--;
data[j + 1] = item;
}
//Əgər i indeksli element sıralanmış hissədəki ən böyük elementdən böyük olarsa dövrdən çıxılır.
else ins = 1;
}
}
}
}
view raw .cs hosted with ❤ by GitHub

1 Yorumlar

  1. vr chess board: A simple, interactive tutorial for free youtube
    Find out how to find a suitable chess youtube downloader board for you. In this simple tutorial, you can find a perfect chess board for you.

    YanıtlaSil
Daha yeni Daha eski