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.

Slides:



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

FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
Yinelemeli Algoritma Analizi & Asimptotik Notasyon
STRİNG FONKSİYONLARI.
Diziler.
Bölüm 8 Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama
BPR152 ALGORİTMA VE PROGRAMLAMA - II
void medyan(int cevap[]) { int j; siralama(cevap);
String Diziler(Katarlar)
BİLGİSAYAR MÜHENDİSLİĞİNE GİRİŞ
Selçuk Üniversitesi’nin Bilişime Gönül Veren Gençleri
Soru1: kuvvet(taban,us) Şeklinde bir yinelenen fonksiyon yazın
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Bölüm 9 Dizgiler Dizgi Tanımı Dizgi Girdi İşlemleri
Bölüm 9 Dizgiler Dizgi Tanımı Dizgi Girdi İşlemleri
String Kütüphanesindeki Arama Fonksiyonları
Bölüm 10 Yapılar ve Birleşimler
Diziler.
Soru1: Dışardan "%s" format belirteci kullanılarak girilecek 20 elemanlı bir dizinin elemanlarının kaç tanesinin rakam, kaç tanesinin harf ve kaç tanesinin.
Soru1: Bir tanesi tam sayı diğeri string olan iki elemanlı bir struct’ı bir başka struct’a direk kopyalama, memcpy kullanarak kopyalama ve tek tek elemanlarını.
DİZİLER.
İNTERNET PROGRAMCILIĞI I BTP 207 Ders 9. Tek değişkende birden fazla bilgi tutulmak istendiğinde kullanılır. Kullanım şekli: var dizi_adı= new Array(eleman1,
Paralel Programlamaya Giriş
Diziler Adres Kavramı Nesnelerin Adresleri sizeof Operatörü
Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama Diziler ve Göstergeler 2-Boyutlu Diziler.
Dizi Elemanlarının Sıralanması
HIZLI SIRALAMA ALGORİTMALARI(QUICK SORT)
Algoritma & Programlama
Algoritma & Programlama
Diziler (Arrays).
Bölüm 3: Diziler BTEP 102 – Veri Yapıları ve Programlama
Diziler. Dizi Tanımı Dizi Elemanlarına Değer Atama Diziler ve Göstergeler 2-Boyutlu Diziler.
C PROGRAMLAMA FONKSİYONLAR Adres ile Fonksiyon Çağırma Pointer (İşaretçiler) ile Fonksiyon Çağırma Rekürsif Fonksiyonlar.
C++ Ders Notları 2.Ders (Dilin Yapısı)
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.
Bil 102 Bölüm 6 Diziler.
PROGRAM DENETİM DEYİMLERİ
DİZİLER Arrays.
Dizgiler Dizgi Tanımı Dizgi Girdi İşlemleri Dizgi Çıktı İşlemleri Dizgi Fonksiyonları Karakter Fonksiyonları Gösterge Dizgileri.
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 4: Diziler
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
2. HAFTA 2. Hafta.
3. HAFTA 3. Hafta.
Algoritmalar ve Programlama I Ders 8:DİZİ (VEKTÖR) KAVRAMI
BİLGİSAYAR programlama II
BİLGİSAYAR programlama II
1 7. HAFTA. 2 Referanslar  Referanslar adres temsilcisidir  İşaretçilerin görevlerini kısmi olarak yapabilirler  Değişken değildirler.  Bellekte yer.
Döngü Komutları. for deyimi bir alt limitten, bir üst limite kadar programın belirli bir parçasını tekrar eder. for deyiminde sayaç artış oranı da verilmelidir.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Dosyalar. Örnek: stok.dat isimli bir dosyaya beyaz eşyanın ismini ve stoktaki miktarlarını kaydeden, dosyadaki bilgilerde düzeltme yapan, dosyadan bilgi.
String Diziler(Katarlar)
C Programlamada, benzer tipte tanımlaman değişkenleri kontrol etmede bize en çok yardım eden dostlarımız dizilerdir. Örneğin: 100 Öğrencinin bilgilerini.
BİLGİSAYAR programlama II
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
BİLGİSAYAR programlama II
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.
BİLGİSAYAR PROGRAMLAMA Araş. Gör. Ahmet ARDAHANLI Kafkas Üniversitesi Mühendislik Fakültesi.
PHP ve HTML İnternet Programlama - 2. Koşullu İfadeler ve Döngüler Döngü ya da çevirim diyebileceğimiz, belli şart ve koşullarda istenilen değerleri yapabilmemizi.
Bilgisayar Programlama BIL 107
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler
Insertion Sort Fikir: Oyun kartlarını sıralamaya benzer.
C Sharp 9. hafta - dIZILER.
DİZİLER Bellekte sıralı bir şekilde bulunan ve aynı türden bilgilerin saklandığı veri yapısına dizi (array) denir. Örneğin kullanıcıdan 7 kişinin not ortalamasını.
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
tanımları yapabilmeniz gerekmektedir .
Bölüm 9 Dizgiler Dizgi Tanımı Dizgi Girdi İşlemleri
İleri Algoritma Analizi
Diziler(Arrays).
Sunum transkripti:

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 veya Z’ den A’ ya sıralama işlemidir. Sıralama işlemi örnekler yardımıyla açıklanacaktır.

En çok kullanılan sıralama algoritmalarından biri “Bubble Sort” algoritmasında, dizideki ilk elemandan başlayarak, her bir eleman kendisinden sonra gelen diğer elemanlarla karşılaştırılır (1. eleman 2, 3, …, n. elamanlarla, 2. eleman 3,4, …, n. elemanlarla). Gerekiyorsa elemanların yerleri değiştirilir.

Örnek: 5 elemanlı sayısal dizinin küçükten büyüğe sıralanması Küçükten büyüğe doğru sıralanmak istenilen dizi: Eleman no Eleman

Adım 1: Dizideki en küçüğün bulunup dizinin ilk elemanı olarak belirlenmesi İşlem no Dizi

1. adımda dizideki eleman sayısı kadar işlem yapılarak dizideki en küçük eleman bulunarak ilk sıraya alınmıştır. İlk işlemde 22 ile 43 karşılaştırılmış, önceki sırada olan sonrakinden küçük olduğundan değişim yapılmamıştır. 3. işlemde dizinin 1. ile 4. elemanı karşılaştırılmış, 9 daha küçük olduğundan 1 ile 4. eleman yer değiştirmiştir.

Adım 2: Dizideki 2. en küçüğün bulunup dizinin 2. elemanı olarak belirlenmesi İşlem no Dizi

Adım 3: Dizideki 3. en küçüğün bulunup dizinin 3. elemanı olarak belirlenmesi İşlem no Dizi

Adım 4: Dizideki 4. en küçüğün bulunup dizinin 4. elemanı olarak belirlenmesi İşlem no Dizi

Sıralı dizi: Eleman no Eleman

Yukarıdaki dizinin sıralanmasına ait program şu şekildedir: #include main() { int dizi[] = {22, 43, 24, 9, 45}; int N = 5; int i,j;

cout << "Siralanmamis dizi\n\n"; cout << "No Eleman\n"; cout << " \n"; for (i=0; i<N; i++) cout << setw(2) << (i+1) << setw(6) << dizi[i] << endl;

for (i=0; i<N-1; i++) for (j=i+1; j<N; j++) if (dizi[i]>dizi[j]) { int gec; gec = dizi[i]; dizi[i] = dizi[j]; dizi[j] = gec; }

cout << "\nSirali dizi\n\n"; cout << "No Eleman\n"; cout << " \n"; for (i=0; i<N; i++) cout << setw(2) << (i+1) << setw(6) << dizi[i] << endl; getch(); }

Örnek: Girilen 5 adet ismin A’dan Z’ye sıralanması Sayısal olmayan bilgilerin sıralanmasında, dizi elemanları karşılaştırılırken birbirine eşit, birbirinden büyük veya küçük olmaları ==, > ve < gibi sembollerle karşılaştırılamamaktadır. Yani dizi[i] < dizi[j] şeklinde bir ifade kulanılamamaktadır.

Bunun yerine, sayısal olmayan bilgilerin karşılaştırılmasında strcmp() fonksiyonu kullanılması gerekmektedir. strcmp( dizi[i], dizi[j]) strcmp( isim, aranan) strcmp( isim, “Ali”)

strcmp() fonksiyonu iki değişkenin birbirine eşit olup olmama, alfabetik olarak hangisinin daha önce veya daha sonra geldiğine göre farklı sayısal değerler üretir.

strcmp(isim, aranan) örneğine göre  isim değişkeninin değeri aranan değişkeninin değerine eşitse strcmp() fonksiyonu 0,  isim, aranan değişkenine göre alfabetik olarak daha önce geliyorsa negatif bir sayı,  tersi durumda pozitif bir sayı üretir.

#include main() { char Ad[5][15], Gec[15]; int N = 5; int i,j; for (i=0; i<N; i++) { cout << (i+1) << ". kisi ismi: "; cin >> Ad[i]; }

for (i=0; i<N-1; i++) for (j=i+1; j<N; j++) if ( strcmp( Ad[i], Ad[j] ) >0 ) { strcpy( Gec, Ad[i] ); strcpy( Ad[i], Ad[j] ); strcpy( Ad[j], Gec ); }

cout << "\nSirali dizi\n"; cout << " \n"; for (i=0;i<N;i++) cout << Ad[i]<<endl; getch(); }

Örnek: Türkiye’nin 7 bölgesine ait bölge adı ve her bir bölge için ortalama sıcaklık değeri girildiğinde, sıcaklık değerlerine göre büyükten küçüğe sıralı listeyi veren program.

#include main() { char Bolge[7][15], B[15]; int Sicak[7], S; int i,j;

for (i=0; i<7; i++) { cout << (i+1) << ". bolge adi: "; cin >> Bolge[i]; cout << "Sicaklik degeri: "; cin >> Sicak[i]; }

for (i=0; i<6; i++) for (j=i+1; j<7; j++) if (Sicak[i] < Sicak[j]) { S = Sicak[i]; Sicak[i] = Sicak[j]; Sicak[j] = S; strcpy( B, Bolge[i] ); strcpy( Bolge[i], Bolge[j] ); strcpy( Bolge[j], B ); }

cout << "\n\nBolge adi Sicaklik\n"; cout << " \n"; cout << setiosflags(ios::left); for (i=0;i<7;i++) cout << setw(16) << Bolge[i] << Sicak[i] << endl; getch(); }

SORULAR 1. N adet sayı bir diziye girildiğinde, dizi elemanlarını küçükten büyüğe sıralayarak sıralı diziyi yazan programı yazınız. NOT: Sıralanmış diziyi ekrana listelerken tekrar eden sayılar varsa sadece bir defa yazılacaktır.

2. N adet sayı bir diziye girildiğinde, dizi elemanlarını küçükten büyüğe sıralayan, eğer varsa tekrar eden sayıları diziye sadece bir defa alarak sıralı diziyi yazan programı yazınız.

3. 7 bölge için sabah, öğlen ve akşam ölçülen sıcaklık değerleri girildiğinde, ortalama sıcaklık değerlerinin bulunduğu listeyi büyükten küçüğe sıralı veren programı yazınız.

4. 7 gün ölçülen gündüz ve gece hava kirlilik değerleri girildiğinde her gün için ortalama kirlilik değerini bularak, ortalama kirlilik değerinin bulunduğu listeyi ortalama kirlilik değerine göre büyükten küçüğe sıralı veren programı yazınız.