İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Son dakika Yazarlar
  1. Ana sayfa
  2. Topluluk
  3. Programlama
  4. Programlama Dilleri
Programlama Dilleri

C Programlama Dili Selection Sort Kodları

erkankarabulut19.03.20164 cevap2.955 görüntüleme
2016'den beri30 mesaj
#1
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.
#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ı
Cevaplar
2016'den beri93 mesaj
#2
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int dizi[100],i,j,n,yedek;
    printf("Dizinin Eleman Sayisini Giriniz..:"); scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        printf("%d. Sayiyi Giriniz..:",i+1); scanf("%d",&dizi[i]);
    }
    for(i=0;i<n;i++)
    {
        for(j=0;j<(n-1);j++)
        {
            if(dizi[i]>dizi[j])
            {
                yedek=dizi[i];
                dizi[i]=dizi[j];
                dizi[j]=yedek;
            }
        }
    }
    for(i=0;i<n;i++)
    {
        printf("%d ",dizi[i]);
    }
}
düzenlendi
2016'den beri93 mesaj
#3
kodu bu sefer böyle yaz ben denedim oldu bir de sen dene
erkankarabulut Konuyu açan
2016'den beri30 mesaj
#4
Benim yazdığım kodda çalışıyorum zaten kardeşim. :):) Teşekkürler yinede.
2016'den beri93 mesaj
#5
senin kod benim derleyicide zaten çalıştı

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.