Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.

Slides:



Advertisements
Benzer bir sunumlar
Yığınlama Sıralaması (Heap Sort)
Advertisements

FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
Diziler.
Bölüm 8 Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama
Yapay Zeka DR.KORHAN KAYIŞLI.
Karar Verme: Eşitlik ve Karşılaştırma Operatörleri
void medyan(int cevap[]) { int j; siralama(cevap);
Problemi Çözme Adımları
Bölüm 2: Program Denetimi
BİLGİSAYAR MÜHENDİSLİĞİNE GİRİŞ
Soru1: kuvvet(taban,us) Şeklinde bir yinelenen fonksiyon yazın
Sorting Methods Basics of Sorting Elementary Sorting Algorithms
Bölüm 10 Yapılar ve Birleşimler
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 3: Döngüler
Özyineli Sıralama Algoritmaları
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Yapısal Program Geliştirme – if, if-else
Temel tanımlar ve işleyiş
Koşul İfadeleri ve Akış Kontrolü Yazdığımız uygulamanın hangi koşulda nasıl davranacağını belirterek bir akış kontrolü oluşturabilmek için koşul ifadelerini.
SINIFLANDIRMA VE REGRASYON AĞAÇLARI
Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama Diziler ve Göstergeler 2-Boyutlu Diziler.
HIZLI SIRALAMA ALGORİTMALARI(QUICK SORT)
Algoritma & Programlama
C PROGRAMLAMA DİZİLER (ARRAYS).
Diziler (Arrays).
Diziler. Dizi Tanımı Dizi Elemanlarına Değer Atama Diziler ve Göstergeler 2-Boyutlu Diziler.
Bilgisayar Programlama. Tek bir değişken tanımlamak için aşağıdaki gibi bir yazım yeterlidir. int i; Hatırlanacağı gibi bu tarz bir tanımlamada.
PROGRAM DENETİM DEYİMLERİ
SONLU ELEMANLARA GİRİŞ DERSİ
The if statement. if Şartlı kontrol Koşul değimi doğru (1) yada yanlış (0) değeri üretir. Şartın doğru olması durumunda if satırından sonraki değimler.
Algoritmalar ve Programlama I Ders 2: Akış Diyagramları
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Algoritmalar ve Programlama I Ders 10: ALTPROGRAM KAVRAMI ve FONKSİYON
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Algoritmalar ve Programlama I Ders 5: Operatörler
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Algoritmalar ve Programlama I Ders 8:DİZİ (VEKTÖR) KAVRAMI
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
1 7. HAFTA. 2 Referanslar  Referanslar adres temsilcisidir  İşaretçilerin görevlerini kısmi olarak yapabilirler  Değişken değildirler.  Bellekte yer.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Floyd Algoritması Floyd Algoritması Dijkstra algoritmasının daha genel halidir. Çünkü şebekedeki herhangi iki düğüm arasındaki en kısa yolu belirler. Algoritma,
BİLGİSAYAR programlama II
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
BİLGİSAYAR programlama II
Sıralama. Sıralama, bir dizideki sayısal elemanların küçükten büyüğe veya büyükten küçüğe, sayısal olmayan bir dizideki elemanların ise A’ dan Z’ ye.
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
Algoritma Analizi Algoritma Algoritma bir problemi çözmek için izlenen komutlar kümesidir. Verilen bir problemin birden fazla çözümü dolayısıyla.
Akış Diyagramları - 1. Akış Diyagramı  Algoritmalar doğal dille yazıldıklarında herkes tarafından aynı biçimde anlaşılmayabilir.  Ancak, akış diyagramlarında.
ALGORİTMA KARMAŞIKLIĞI
BİLGİSAYAR PROGRAMLAMA Araş. Gör. Ahmet ARDAHANLI Kafkas Üniversitesi Mühendislik Fakültesi.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
O R T L G İ M A A Ve Akış şemaları.
Bölüm 8 Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama Diziler ve Göstergeler 2-Boyutlu Diziler.
Algoritmalar II Ders 1: Alan zaman takası yöntemi.
Insertion Sort Fikir: Oyun kartlarını sıralamaya benzer.
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
Bölüm 8 Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama
İleri Algoritma Analizi
tanımları yapabilmeniz gerekmektedir .
Bölüm 8 Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama
İleri Algoritma Analizi
Algoritma Nedir? Algoritmayı, herhangi bir problemin çözümü için izlenecek yolun adımlar halinde yazılması olarak tanımlayabiliriz. Algoritma, bir problemin.
YAPISAL PROGRAMLAMA Hafta-7
Bölüm 2: Program Denetimi
NİŞANTAŞI ÜNİVERSİTESİ
WHILE DÖNGÜSÜ while (şart) { ifade 1; ifade 2; }
NİŞANTAŞI ÜNİVERSİTESİ
MTM216 GÖRSEL PROGRAMLAMA
İleri Algoritma Analizi
Diziler(Arrays).
Sunum transkripti:

Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz

Seçme sıralama (selection sort) algoritması Seçme sıralama (selection sort) en basit sıralama algoritmalarındandır. Dizideki ilk elemandan başlanır. Seçilen dizi elemanı ile bu elemandan sonra gelen dizi elemanları sırası ile karşılaştırılır. Eğer küçüklük/büyüklük (sıralama isteğine bağlı olarak) durumu var ise yerleri değiştirilir. İkinci etapta dizinin ikinci elemanı ile bu elemandan sonra gelen dizi elemanları sırası ile karşılaştırılır ve aynı şekilde eğer küçüklük/büyüklük durumu var ise yerleri değiştirilir. Bu karşılaştırma işlemi sondan bir önceki eleman ile son elemanın karşılaştırılmasına kadar devam eder ve aynı şekilde eğer küçüklük/büyüklük durumu var ise yerleri değiştirilir.

Küçükten büyüğe doğru sıralama yapan seçme sıralama (selection sort) algoritması için akış diyagramını çizelim;

sıralama algoritmasının C/C++ Programı; /* Secme Siralama Algoritmasi*/ #include int i,j,n,b; int A[100]; void main(void) {clrscr(); printf("dizi eleman sayisini giriniz: "); scanf("%d",&n); for(i=1;i<=n;i++) {printf("A[%d]: ",i); scanf("%d",&A[i]); printf(" \n"); } for(i=1;i<n;i++) {for(j=i+1;j<=n;j++) {if(A[j]<A[i]) {b=A[i]; A[i]=A[j]; A[j]=b;} } for(i=1;i<=n;i++) { printf("%d ",A[i]); } printf(" \n"); getch(); }

Kabarcık sıralama (bubble sort) algoritması Bu algoritma başlangıçta yer değiştirme sıralaması olarak adlandırılmıştır. Günümüzde kabarcık sıralaması olarak adlandırılmasının nedeni dizi içindeki büyük elemanların algoritmanın her adımında dizi sonuna doğru lineer olarak ilerlemesidir. Bu algoritmada baştan sona doğru yapılan taramalar ile arka arkaya gelen (ardışık) elemanlar kıyaslanır. Eğer küçüklük/büyüklük durumu var ise yerleri değiştirilir. Küçükten büyüğe doğru sıralama yapan kabarcık sıralama (bubble sort) algoritması için akış diyagramını çizelim;

Küçükten büyüğe doğru sıralama yapan kabarcık sıralama (bubble sort) algoritması için akış diyagramını çizelim;

/* Kabarcik Siralama Algoritmasi*/ #include int i,j,n,b; int A[100]; void main(void) {clrscr(); printf("dizi eleman sayisini giriniz: "); scanf("%d",&n); for(i=1;i<=n;i++) {printf("A[%d]: ",i); scanf("%d",&A[i]); printf(" \n"); } for(i=1;i<=n;i++) {for(j=1;j<n;j++) {if(A[j+1]<A[j]) {b=A[j]; A[j]=A[j+1]; A[j+1]=b;} } for(i=1;i<=n;i++) { printf("%d ",A[i]); } printf(" \n"); getch(); }

Yerleştirmeli sıralama (insertion sort) algoritması Bu yöntem sıralama problemlerine getirilen basit ve temel yaklaşımlardan biridir. Algoritmada dizinin ikinci elemanından başlanarak elemanlar sırayla kontrol edilir. Bu algoritmada her eleman, kendinden önceki alt dizideki elemanlar ile karşılaştırılmakta ve daha küçük ise ilgili yerdeki araya yerleştirilmektedir. Bu şekilde dizide geriye doğru ilerlenir. Bu işlem seçilen dizi elemanından küçük değer kalmayıncaya kadar devam eder. İlk dizi elemanı doğru yere yerleştirildikten sonra bir sonraki eleman seçilerek yukarıdaki işlemler tekrarlanır. İşlem dizinin son elemanının seçimi ile tamamlanmış olur.

Yerleştirmeli sıralama (insertion sort) algoritması Oyun kartlarının sıralanmasında ve yerleştirilmesinde de buna benzer bir yöntem kullanılır. Önce desteden bir kart seçilip kartın geleceği doğru yer bulunur ve bu yerden sonraki kartlar kaydırılarak ilgili kart araya yerine yerleştirilir. Tüm kartlar sıralanana kadar bu işleme devam edilir. Bu yaklaşımdan yola çıkarak dizi elemanının doğru yere yerleştirme işlemi, dizi elemanının geçici değişkende tutularak kendisinden önce gelen, kendisinden büyük elemanların sağa doğru kaydırılması ve boşalan yere bu elemanın yerleştirilmesi ile gerçekleştirilir.

Küçükten büyüğe doğru sıralama yapan yerleştirmeli sıralama (insertion sort) algoritması için akış diyagramı

/* Yerlestirmeli Siralama Algoritmasi*/ #include int i,j,n,b; int A[100]; void main(void) {clrscr(); printf("dizi eleman sayisini giriniz: "); scanf("%d",&n); for(i=1;i<=n;i++) {printf("A[%d]: ",i); scanf("%d",&A[i]); printf(" \n"); } for(i=2;i<=n;i++) {b=A[i]; j=i; while((b 1)) {A[j]=A[j-1]; j--;} A[j]=b; } for(i=1;i<=n;i++) { printf("%d ",A[i]); } printf(" \n"); getch(); }

Dizilerde arama algoritmaları Çoklu veriler içerisinde istenilen veriyi aramak amacı ile kullanılan algoritmalar arasında en yaygın olarak kullanılanları, sıralı arama ve ikili (binary) arama algoritmalarıdır. Sıralı arama algoritması Yavaş olmasına rağmen basit olan bu algoritmada dizideki tüm elemanlar sıra ile aranan değer ile karşılaştırılır. Bu işlem değer bulunana kadar devam eder.

#include int i,ara,n; int A[100]; void main(void) {clrscr(); printf("dizi eleman sayisini giriniz: "); scanf("%d",&n); for(i=0;i<n;i++) {printf("dizi elemani giriniz: "); scanf("%d",&A[i]); printf(" \n"); } printf("aranan deger: "); scanf("%d",&ara); for(i=0;i<n;i++) {if(ara==A[i]) {printf("deger: %d, sirasi: %d", A[i], i+1); goto son;} } printf("aranan deger yok"); son: getch(); }

İkili (binary) arama algoritması İkili arama algoritmasının kullanılabilmesi için dizideki tüm elemanların sıralı olması (küçükten büyüğe doğru olduğunu varsayalım) gerekir. Karşılaştırma işlemine dizinin ortasında bulunan elemandan başlanır. Eğer aranan eleman dizinin orta elemanından küçük ise dizinin ortadan sonraki üst kısmı atılır. Eğer aranan eleman dizinin orta elemanından büyük ise dizinin ortadan önceki alt kısmı atılır. Bu şekilde dizi yarılanmış olur. Bir sonraki aşamada karşılaştırma dizinin kalan parçasının orta elemanı ile yapılır. Aranılan eleman bulununcaya kadar bu şekilde dizi yarılanarak karşılaştırma işlemi devam eder.

#include int i,ara,n,k,ilk,ort,son; int A[100]; void main(void) {clrscr(); printf("dizi eleman sayisini giriniz: "); scanf("%d",&n); for(i=1;i<=n;i++) {printf("dizi elemani giriniz: "); scanf("%d",&A[i]); printf(" \n"); } printf("aranan deger: "); scanf("%d",&ara); ilk=1; son=n; k=0; while(ilk<=son && k!=1) { ort=(ilk+son)/2; if(ara<A[ort]) son=ort-1; else if (ara>A[ort]) ilk=ort+1; else k=1; } if(k==1) printf("deger: %d, sirasi: %d", A[ort], ort); else printf("aranan deger yok"); getch(); }

Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz