2016'den beri30 mesaj
Merhaba Arkadaşlar,
Bu aradalar bir kaç yerde selection sort ile ilgili sorular gördüğüm için bunu paylaşma gereği duydum. Umarım birilerinin işine yarar.
Temel mantığını yazılı olarakta anlatmak gerekirse dizinin ilk elemanını ilk for döngüsü içerisinde en küçük yada en büyük olarak kabul ediyoruz. En büyük olarak kabul ettiğimizi varsayalım. En büyük olarak kabul ettiğimiz bu değeri sırası ile diğer bütün elemanlarla karşılaştırıp varsa ondan daha büyük olan elemanla veya daha büyük olan elemanlar arasından en büyük olanı ile yer değiştirdik. Böylece en büyük elemanı başa almış olduk. Daha sonra dizinin ikinci terimini en büyük eleman kabul edip ikinci elemandan sonra gelen elemanlarla karşılaştırıp aynı işlemlere devam ettik ve bu şekilde rastgele olarak atanan dizimizi büyükten küçüğe sıralamış olduk.
Kaynak ve Videolu Anlatım İçin :
C Dersleri (10. Ders) Sıralama Algoritmaları
Bu aradalar bir kaç yerde selection sort ile ilgili sorular gördüğüm için bunu paylaşma gereği duydum. Umarım birilerinin işine yarar.
Temel mantığını yazılı olarakta anlatmak gerekirse dizinin ilk elemanını ilk for döngüsü içerisinde en küçük yada en büyük olarak kabul ediyoruz. En büyük olarak kabul ettiğimizi varsayalım. En büyük olarak kabul ettiğimiz bu değeri sırası ile diğer bütün elemanlarla karşılaştırıp varsa ondan daha büyük olan elemanla veya daha büyük olan elemanlar arasından en büyük olanı ile yer değiştirdik. Böylece en büyük elemanı başa almış olduk. Daha sonra dizinin ikinci terimini en büyük eleman kabul edip ikinci elemandan sonra gelen elemanlarla karşılaştırıp aynı işlemlere devam ettik ve bu şekilde rastgele olarak atanan dizimizi büyükten küçüğe sıralamış olduk.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main ()
{
int i,j,dizi[100],temp,min,e;
srand(time(NULL)); // bilmeyenler için programı tekrar çalıştırdığımızda dizimize aynı
// değerleri girmemesi için kullandığımız kod.
printf("Dizinin eleman sayisini giriniz :");
scanf("%d",&e);
for(i=0;i<e;i++)
{
dizi[i]=rand()%100; // rastgele eleman atadık.
}
for(i=0;i<e;i++)
{
printf(" %d ",dizi[i]);
}
printf("\n");
for(i=0;i<e-1;i++) // Dış döngüde sırası ile elemanlari min olarak kabul ettik.
{
min=i;
for(j=i+1;j<e;j++) // İç döngüde yer değiştirme işlemlerini yaptık.
{
if(dizi[i]>dizi[j])
{
temp=dizi[i];
dizi[i]=dizi[j];
dizi[j]=temp;
}
}
}
for(i=0;i<e;i++) // Dizinin son halini ekrana yazdırdık.
{
printf(" %d ",dizi[i]);
}
}Kaynak ve Videolu Anlatım İçin :
C Dersleri (10. Ders) Sıralama Algoritmaları