33
ALGORİTMA VE PROGRAMLAMA Sıralama

Sunu algo10

Embed Size (px)

Citation preview

Page 1: Sunu algo10

ALGORİTMA VE PROGRAMLAMA

Sıralama

Page 2: Sunu algo10

SIRALAMA

Page 3: Sunu algo10

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.

Page 4: Sunu algo10

En çok kullanılan sıralama algoritmalarından

biri “Seçimli Sıralama, Selection 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.

Page 5: Sunu algo10

ÖRNEK: 5 ELEMANLı SAYıSAL BIR DIZININ KÜÇÜKTEN

BÜYÜĞE SıRALANMASı

Küçükten büyüğe doğru sıralanmak istenilen

dizi elemanları:

Eleman

no

1 2 3 4 5

Eleman 22 43 24 9 45

Page 6: Sunu algo10

ADıM 1: DIZIDEKI EN KÜÇÜĞÜN BULUNUP DIZININ ILK

ELEMANı OLARAK BELIRLENMESI

iterasyon

Dizi Elemanları

1 2 3 4 5

1 22 43 24 9 45

2 22 43 24 9 45

3 22 43 24 9 45

4 9 43 24 22 45

5 9 43 24 22 45

Page 7: Sunu algo10

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.

Page 8: Sunu algo10

ADıM 2: DIZIDEKI 2. EN KÜÇÜĞÜN BULUNUP DIZININ 2.

ELEMANı OLARAK BELIRLENMESI

iterasyon

Dizi Elemanları

1 2 3 4 5

1 9 43 24 22 45

2 9 24 43 22 45

3 9 22 43 24 45

4 9 22 43 24 45

Page 9: Sunu algo10

ADıM 3: DIZIDEKI 3. EN KÜÇÜĞÜN BULUNUP DIZININ 3.

ELEMANı OLARAK BELIRLENMESI

iterasyon

Dizi Elemanları

1 2 3 4 5

1 9 22 43 24 45

2 9 22 24 43 45

3 9 22 24 43 45

Page 10: Sunu algo10

ADıM 4: DIZIDEKI 4. EN KÜÇÜĞÜN BULUNUP DIZININ 4.

ELEMANı OLARAK BELIRLENMESI

İşlem no

Dizi

1 2 3 4 5

1 9 22 24 43 45

2 9 22 24 43 45

Page 11: Sunu algo10

Sıralı dizi:Eleman

no

1 2 3 4 5

Eleman 9 22 24 43 45

Page 12: Sunu algo10

YUKARıDAKI DIZININ SıRALANMASıNA AIT PROGRAM ŞU

ŞEKILDEDIR:

// siralamaSecmeli.cpp : main project file.

#include "stdafx.h"

#include <iostream>

#include <iomanip>

#include <conio.h>

using namespace std;

int dizi[] = {22, 43, 24, 9, 45};

int N = 5;

int i, j, gecici;

Page 13: Sunu algo10

int main()

{

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;

Page 14: Sunu algo10

for (i=0; i<N-1; i++)

for (j=i+1; j<N; j++)

if (dizi[i]>dizi[j])

{

gecici = dizi[i];

dizi[i] = dizi[j];

dizi[j] = gecici;

}

Page 15: Sunu algo10

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();

return 0;

}

Page 16: Sunu algo10
Page 17: Sunu algo10

Ö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 semboller ile karşılaştırılamaz.

Yani

dizi[i] < dizi[j]

şeklinde bir ifade kullanılamaz.

Page 18: Sunu algo10

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”)

Page 19: Sunu algo10

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.

Page 20: Sunu algo10

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 ise pozitif bir sayı üretir.

Page 21: Sunu algo10

// siralaKarakter.cpp : main project file.

#include "stdafx.h"

#include <iostream>

#include <iomanip>

#include <conio.h>

using namespace std;

char Ad[5][15], Gecici[15];

int N = 5;

int i, j;

Page 22: Sunu algo10

int main(array<System::String ^> ^args)

{

for (i=0; i<N; i++)

{

cout << (i+1) << ". kisi ismi: ";

cin >> Ad[i];

}

Page 23: Sunu algo10

for (i=0; i<N-1; i++)

for (j=i+1; j<N; j++)

if (strcmp( Ad[i], Ad[j] ) > 0)

{

strcpy( Gecici, Ad[i] );

strcpy( Ad[i], Ad[j] );

strcpy( Ad[j], Gecici );

}

Page 24: Sunu algo10

cout << "\nSirali dizi\n";

cout << "-----------\n";

for (i=0;i<N;i++)

cout << Ad[i]<<endl;

getch();

return 0;

}

Page 25: Sunu algo10
Page 26: Sunu algo10

ÖRNEK:

Günlük sıcaklık değerleri klavyeden

bilgisayara girildiğinde, sıcaklığa göre

büyükten küçüğe sıralı listeyi oluşturan bir

program yazınız?

Page 27: Sunu algo10

/ sicaklik.cpp : main project file.

#include "stdafx.h"

#include <iostream>

#include <iomanip>

#include <conio.h>

using namespace std;

char Gun[7][15], B[15];

int Sicaklik[7], S;

int i,j;

Page 28: Sunu algo10

int main()

{

for (i=0; i<7; i++)

{

cout << (i+1) << ". gun ";

cin>>Gun[i];

cout << "sicaklik degeri: ";

cin >> Sicaklik[i];

}

Page 29: Sunu algo10

for (i=0; i<6; i++)

for (j=i+1; j<7; j++)

if (Sicaklik[i] < Sicaklik[j])

{

S = Sicaklik[i];

Sicaklik[i] = Sicaklik[j];

Sicaklik[j] = S;

strcpy( B, Gun[i] );

strcpy( Gun[i], Gun[j] );

strcpy( Gun[j], B );

}

Page 30: Sunu algo10

cout << "\n\nGunler Sicaklik\n";

cout << "--------------- --------\n";

cout << setiosflags(ios::left); //sola dayali format

for (i=0;i<7;i++)

cout << setw(16) << Gun[i]

<< Sicaklik[i] << endl;

getch();

return 0;

}

Page 31: Sunu algo10
Page 32: Sunu algo10
Page 33: Sunu algo10

ÖDEV: 10 öğrencinin bulunduğu bir

sınıfta, öğrenci adı, soyadı, vize ve

final notunu dizi veri tipine

kaydeden, vize ve finalin %50’sini

alarak başarı notunu hesap eden,

girilen verileri ve başarı notunu

listeleyen, isme göre arama yapan,

vize notuna göre küçükten büyüğe

sıralayan, başarı notu 50’nin üzerinde

olanları listeleyen bir program

yazınız?