Selection Sort

Selection sort, dizinin ilk elemanı en küçük olarak kabul edilir, sonra dizi içerisindeki en küçük eleman aranır, bulunduğu zaman ilk eleman ile yer değiştirilir; daha sonra kalan elemanlar arasında ikinci en küçük eleman aranır ve ikinci elemanla yer değiştirilir. Bu işlem dizinin son elemanına kadar tekrar edildiğinde dizi küçükten, büyüğe doğru sıralanmış olur.

Not: Selection sort kararsız bir sıralama yani sıralama sırasında listede iki benzer öğelerin oluşumunu değiştirebilir.Ancak, bağlı liste veri yapılarını kullanarak gerçekleştirildiğinde istikrarlı bir sıralama da oluşturabilir.

Özellikleri

  • Zaman Karmaşıklığı O(n^2) çünkü iki tane iç içe döngü vardır.

  • İstikrarlı değil

  • O(1) extra alan

  • O(n) swaps

  • Uyarlanabilir değil,

Çalışma Şekli

Akış Diagramı

C Kodu

#include <stdio.h>

#define A_SIZE 10

void selection_sort(int *p, int size);
void print_array(int *p, int size);


int main(void)
{
   int a[A_SIZE] = {45, 4, 12, 56, 87, -6, 0, 587, -56, 4};

   print_array(a, A_SIZE);
   selection_sort(a, A_SIZE);
   print_array(a, A_SIZE);
   return 0;
}
/**************************************/
void selection_sort(int *p, int size)
{
   int   i, j, temp, min;

   for (i = 0; i < size - 1; i++) {
      min = i;
      for (j = i + 1; j < size; j++)
         if (p[min] > p[j])
            min = j;
      temp = p[min];
      p[min] = p[i];
      p[i] = temp;
   }
}
/**************************************/
void print_array(int *p, int size)
{
   int i;

   for (i = 0; i < size; i++)
      printf("%d ", p[i]);
   putchar('\n');
}

//Ekran Çıktısı
// 45   4 12 56 87 -6  0 587  -56   4
//-56  -6  0  4  4 12 45  56   87 587

Java Kodu

// Java program for implementation of Selection Sort
class SelectionSort
{
    void sort(int arr[])
    {
        int n = arr.length;

        // One by one move boundary of unsorted subarray
        for (int i = 0; i < n-1; i++)
        {
            // Find the minimum element in unsorted array
            int min_idx = i;
            for (int j = i+1; j < n; j++)
                if (arr[j] < arr[min_idx])
                    min_idx = j;

            // Swap the found minimum element with the first
            // element
            int temp = arr[min_idx];
            arr[min_idx] = arr[i];
            arr[i] = temp;
        }
    }

    // Prints the array
    void printArray(int arr[])
    {
        int n = arr.length;
        for (int i=0; i<n; ++i)
            System.out.print(arr[i]+" ");
        System.out.println();
    }

    // Driver code to test above
    public static void main(String args[])
    {
        SelectionSort ob = new SelectionSort();
        int arr[] = {64,25,12,22,11};
        ob.sort(arr);
        System.out.println("Sorted array");
        ob.printArray(arr);
    }
}
//Ekran Çıktısı
//Sorted array:
//11 12 22 25 64

results matching ""

    No results matching ""