Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Veri Yapıları. Veri yapıları bilgisayar ortamında verilerin etkin olarak saklanması ve işlenmesi için kullanılan yapılardır. Karakter, Tamsayı ve Gerçel.

Benzer bir sunumlar


... konulu sunumlar: "Veri Yapıları. Veri yapıları bilgisayar ortamında verilerin etkin olarak saklanması ve işlenmesi için kullanılan yapılardır. Karakter, Tamsayı ve Gerçel."— Sunum transkripti:

1 Veri Yapıları

2 Veri yapıları bilgisayar ortamında verilerin etkin olarak saklanması ve işlenmesi için kullanılan yapılardır. Karakter, Tamsayı ve Gerçel Sayı gibi değişkenler temel veri yapısı olarak kabul edilir. Karakterler bir araya gelerek sözceleri (string), sayılar bir araya gelerek dizileri (array) oluşturur. Seçilen veri yapısı algoritmanın doğru ve etkin çalışabilmesi için önemlidir.

3 Veri Yapısı ve Bilgi 0100 0010 0100 0001 0100 0010 0100 0001 Yukarıdaki bit dizisi; – Karakter dizisi (string) ise (ASCII):B A B A – BCD (Binary Coded Decimal) ise:4 2 4 1 4 2 4 1 – 16-bit tam sayı ise:16961 16961 – 32-bit tam sayı ise:1111573057 – 32-bit gerçel sayı ise:0.4276801x10 66 42414241

4 Temel Veri Yapıları Karakterler – ASCII Her karakter 8 bit (2 8 = 256 farklı karakter) – Unicode Her karakter 16 bit (2 16 = 65536 farklı karakter) Tamsayılar – 8 bitshort, short int, ShortInt, byte – 16 bit integer, int, integer16, Int16 – 32 bitlong, long int, LongInt, integer32, Int32 Ondalıklı (Gerçel) Sayılar – 16 bithalf (IEEE 754-2008) – 32 bit single, float (C) – 64 bitdouble, real (Pascal) – 128 bitquad

5 Diziler String: Karakter dizileri (Sözce) – Karakter sayısının tutulması (PASCAL) [ 6, t, r, a, k, y, a ] – Sonlandırma karakterinin (\0) kullanılması (C) [ t, r, a, k, y, a, \0 ] Array: Sayı dizileri – Tek boyutlu, İki boyutlu (matris), Çok boyutlu CA[1][3]A[0][2] PASCALA[1,3]A[0,2] BASICA(1,3)A(0,2)

6 Tanımlamalı Veri Yapıları Temel veri yapılarının birleştirilmesi ile oluşturulmuş veri yapılarıdır. Bir tanımlamalı veri yapısının içinde başka bir tanımlamalı veri yapısı da yer alabilir. C dilinde tanımlamalı veri yapısı oluşturmak için struct deyimi kullanılır. struct kayit { char ad[15]; 15 char soyad[25]; 25 char adres[150];150 unsigned short int yas; 1 }191

7 Tanımlamalı Veri Yapıları Bir struct veri yapısının boyutu, içinde yer alan tüm temel veri yapılarının boyutlarının toplamına eşittir. Birden çok değişkenin aynı bellek alanını kullanmasına izin veren union veri yapısının boyutu ise; içinde yer alan temel veri yapılarından en büyüğünün boyutuna eşittir. union kisiler { char ad[15];15 char soyad[25];25 unsigned long int tel; 4 }25

8 Soyut Veri Yapıları Bir grup veriyi ve bu veriler üzerinde yapılabilecek tüm işlemleri bir araya getiren yapıya soyut veri yapısı (abstract data type: ADT) denir. Kullanıcı için yapının içinin tamamen soyut olması (bilinmesinin gerekmemesi) nedeniyle soyut veri yapısı adını almıştır. En çok kullanılan soyut veri tipleri: kuyruk, yığın, bağlı liste ve ağaç’tır.

9 Kuyruk (Queue) Kuyruklar, eleman eklemelerin sondan (back) ve eleman çıkarmaların baştan (front) yapıldığı veri yapılarıdır. Bir eleman ekleneceği zaman kuyruğun sonuna eklenir. Bir eleman çıkarılacağı zaman kuyrukta bulunan ilk eleman çıkarılır. Bu eleman da kuyruktaki elemanlar içinde ilk eklenen elemandır. Bu nedenle kuyruklara FIFO (First-In First-Out = ilk giren ilk çıkar) listeleri de denilmektedir.

10 Gerçek yaşamda da bankalarda, duraklarda, gişelerde, süpermarketlerde, otoyollarda kuyruklar oluşmaktadır. Kuyruğa ilk olarak girenler işlemlerini ilk olarak tamamlayıp kuyruktan çıkarlar. Veri yapılarındaki kuyruklar bu tür veri yapılarının simülasyonunda kullanılmaktadır. Ayrıca işlemci, yazıcı, disk gibi kaynaklar üzerindeki işlemlerin yürütülmesinde ve bilgisayar ağlarında paketlerin yönlendirilmesinde de kuyruklardan yararlanılmaktadır. Kuyruk (Queue)

11 Kuyruk İşlemleri ve Tanımları insert(q,x) : q kuyruğunun sonuna x elemanını ekler. (enqueue) x=remove(q) : q kuyruğunun başındaki elemanı silerek x'e atar. (dequeue)

12 Yığın (Stack) Eleman ekleme çıkarmaların en üstten (top) yapıldığı veri yapısına yığın (stack) adı verilir. Bir eleman ekleneceğinde yığının en üstüne konulur. Bir eleman çıkarılacağı zaman yığının en üstündeki eleman çıkarılır. Bu eleman da yığındaki elemanlar içindeki en son eklenen elemandır. Bu nedenle yığınlara LIFO (Last-In First-Out : son giren ilk çıkar) listeleri de denilir.

13 Yığın yapısına gerçek yaşamdan örnek verirsek: üst üste konulan eşyaları taşımak için en üste konulan eşyayı (en son konulmuş olanı) ilk olarak almamız gerekir. Bir feribotun hem önünde hem arkasında araç indirme/bindirme kapısı varsa, o feribot FIFO düzeninde, sadece 1 kapısı varsa LIFO düzeninde araç indirip/bindirir. Bir web tarayıcısında önceki sayfalara dönmek ve bir uygulamada en son yapılan işlemleri geri almak gibi işlerde yığın yapısı kullanılabilir. Yığın (Stack)

14 Yığın İşlemleri ve Tanımları push(s,i) : s yığınının en üstüne i değerini eleman olarak ekler. i = pop(s) : s yığınının en üstündeki elemanı çıkartır ve değerini i değişkenine atar. stacktop : (yığıntan çıkarılmaksızın en üstteki elemanın değerini döndüren işlem, diğer adı peek)

15 Liste (List) Eleman ekleme ve çıkarma işlemlerinin herhangi bir sınırlama olmaksızın istenilen yerden yapılabildiği veri yapısıdır. Örneğin daha önce oluşturduğumuz bir bugün yapılacak işler listesine bir eleman eklerken, her zaman en sona veya en başa değil araya eleman eklememiz de gerekebilir. 10:30 Bilgisayar Müh. Giriş 1 Dersi 16:30 Bilgisayar Müh. Giriş 1 Dersi (İ.Ö.) 13:30 Veri Tabanı Yönetimi Dersi 12:30 Bölüm Genel Kurulu Toplantısı

16 Bağlı Liste (Linked List) Kuyruk ve Yığın veri yapılarını diziler ile gerçekleştirmek mümkün olsa da, liste yapısını gerçekleştirmek için dizi çok uygun değildir. – Araya eleman eklenmesi/çıkartılması gerektiğinde, o elemandan sonra gelen tüm elemanların birer kademe ileri/geri kaydırılması gereklidir. Bağlı liste yapısı, listedeki sıralamayı bir bağ ile göstererek bu gerekliliği ortadan kaldırmıştır.

17 Bağlı Liste (Linked List) Listenin her bir elemanına düğüm (node) adı verilir. Düğümler, bilgi ve bağ (adres) alanlarından oluşmaktadırlar. Bağ alanında bir sonraki düğümün adresi genellikle bir işaretçi (pointer) ile saklanır. Eğer bilgi alanında kimlik no, ad, soyad gibi birden çok veri bulunuyorsa (bir struct yapısı gibi) ve bu alanlardan birkaç tanesine göre sıralama bilgisi tutulması gerekliyse, birden çok bağ alanı kullanılabilir.

18 Bağlı Liste Kullanmanın Avantajları Yığın ve kuyrukların gerçekleştirilmesinde dizi kullanmanın dezavantajları: – hiç kullanılmasa veya az kullanılsa bile sabit miktardaki belleğin bu yapılara ayrılması gerekir – sabit bellek dolduğunda eleman eklenemez Bağlı listeler kullanılırsa bu problemler ortadan kalkmaktadır: – Bellekten sabit miktarda bir yer ayrılmaz, ana bellek dolana kadar bu yapılara ekleme işlemi yapılabilir

19 Ağaç (Tree) Ağaç yapıları sıradüzensel (hiyerarşik) bir yapıyı gerçekleştirmek için kullanılır. Ağacın her bir elemanına da listede olduğu gibi düğüm (node) denir. En üstteki elemana kök düğüm (root node), en uçtaki elemanlara ise yaprak düğüm (leaf node) denir. Bir düğümü işaret eden (üst seviyedeki) düğüme ebeveyn düğüm (parent node), bir düğümün işaret ettiği (alt seviyedeki) düğümlere çocuk düğüm (child node) denir.

20 İkili Ağaç (Binary Tree) Eğer bir ağaç yapısında her düğümün sadece iki çocuk düğümü olabiliyorsa ikili ağaç, ikiden çok çocuk düğümü olabiliyorsa çoklu ağaç denir. İlçe (yaprak) Şehir (ülkenin çocuğu, ilçenin ebeveyni) Ülke (kök) TürkiyeİzmirKarşıyakaBornovaİstanbulBakırköyŞişli * Gerçekte ülke, şehir ve ilçe bilgilerini çoklu ağaçlarda saklamak gerekir.

21 Ağaç (Tree) Arama ve sıralama işlemleri için kullanılan İkili Arama Ağacı (BST: Binary Search Tree) gibi özel ağaç türleri de vardır. Ağaç yapıları ikili veya çoklu bağlı listeler ile gerçekleştirilebilir. veribağ2bağ1 veri

22 Yığın Örneği: Palindorme Verilen bir cümlenin palindorme olup olmadığını belirleyen algoritmayı oluşturunuz. Palindrome: Düzden ve tersten aynı okunan sözcükler. (Örn. kabak, a man a plan a canal panama, … gibi) Algoritma: İlk olarak cümledeki boşlukları silin. Daha sonra tüm cümleyi bir yığına yerleştirin. Daha sonra yığından tek tek çekme (pop) yapın boşlukları kaldırılmış cümlenin karakterleri ile çektiğiniz karakterleri birer birer karşılaştırın.

23 Yığın Örneği: Hanoi Kuleleri Şekilde gördüğünüz diskleri ilk çubuktan üçüncü çubuğa yine aynı sıra ile (aşağıdan yukarı büyükten küçüğe) taşıyın. – Bir defada sadece 1 disk alıp başka bir çubuğa yerleştirebilirsiniz. – Küçük diskin üzerine büyük disk yerleştiremezsiniz.

24 24 Linear Search (Doğrusal arama) 4170529368 a1a1a1a1 a2a2a2a2 a3a3a3a3 a4a4a4a4 a5a5a5a5 a6a6a6a6 a7a7a7a7 a8a8a8a8 a9a9a9a9 a 10 i23456781x3 location8

25 25 Binary search (İkili arama) 2468101214161820 a1a1a1a1 a2a2a2a2 a3a3a3a3 a4a4a4a4 a5a5a5a5 a6a6a6a6 a7a7a7a7 a8a8a8a8 a9a9a9a9 a 10 ijm1x14 1056887767location7

26 Insertion Sort (Araya yerleştirme) 824936824936

27 824936824936

28 824936 284936

29 824936284936824936284936

30 824936 284936 248936

31 824936284936248936824936284936248936

32 824936 284936 248936 248936

33 824936284936248936248936824936284936248936248936

34 824936 284936 248936 248936 234896

35 824936284936248936248936234896824936284936248936248936234896

36 8282 2828 4444 9999 3333 6666 248936 248936 234896 234689

37 Bubble Sort (Kabarcık sıralaması) 5 12 3542 77 101 1 2 3 4 5 6

38 Bubble Sort (Kabarcık sıralaması) 5 12 3542 77 101 1 2 3 4 5 6 Swap 4277

39 Bubble Sort (Kabarcık sıralaması) 5 12 3577 42 101 1 2 3 4 5 6 Swap 3577

40 Bubble Sort (Kabarcık sıralaması) 5 12 7735 42 101 1 2 3 4 5 6 Swap 1277

41 Bubble Sort (Kabarcık sıralaması) 5 77 1235 42 101 1 2 3 4 5 6

42 Bubble Sort (Kabarcık sıralaması) 5 77 1235 42 101 1 2 3 4 5 6 Swap 5101

43 Bubble Sort (Kabarcık sıralaması) 77 1235 42 5 1 2 3 4 5 6 101

44 Bubble Sort (Kabarcık sıralaması) 77 1235 42 5 1 2 3 4 5 6 101 5 4212 35 77 1 2 3 4 5 6 10142 5 35 12 77 1 2 3 4 5 6 10142 35 5 12 77 1 2 3 4 5 6 10142 35 12 5 77 1 2 3 4 5 6 101 N - 1

45 Selection Sort (Seçmeli sıralama) 513462 Comparison Data Movement Sorted

46 Selection Sort (Seçmeli sıralama) 513462 Comparison Data Movement Sorted

47 Selection Sort (Seçmeli sıralama) 513462 Comparison Data Movement Sorted

48 Selection Sort (Seçmeli sıralama) 513462 Comparison Data Movement Sorted

49 Selection Sort (Seçmeli sıralama) 513462 Comparison Data Movement Sorted

50 Selection Sort (Seçmeli sıralama) 513462 Comparison Data Movement Sorted

51 Selection Sort (Seçmeli sıralama) 513462 Comparison Data Movement Sorted

52 Selection Sort (Seçmeli sıralama) 513462 Comparison Data Movement Sorted  Largest

53 Selection Sort (Seçmeli sıralama) 513426 Comparison Data Movement Sorted

54 Selection Sort (Seçmeli sıralama) 513426 Comparison Data Movement Sorted

55 Selection Sort (Seçmeli sıralama) 513426 Comparison Data Movement Sorted

56 Selection Sort (Seçmeli sıralama) 513426 Comparison Data Movement Sorted

57 Selection Sort (Seçmeli sıralama) 513426 Comparison Data Movement Sorted

58 Selection Sort (Seçmeli sıralama) 513426 Comparison Data Movement Sorted

59 Selection Sort (Seçmeli sıralama) 513426 Comparison Data Movement Sorted

60 Selection Sort (Seçmeli sıralama) 513426 Comparison Data Movement Sorted  Largest

61 Selection Sort (Seçmeli sıralama) 213456 Comparison Data Movement Sorted

62 Selection Sort (Seçmeli sıralama) 213456 Comparison Data Movement Sorted

63 Selection Sort (Seçmeli sıralama) 213456 Comparison Data Movement Sorted

64 Selection Sort (Seçmeli sıralama) 213456 Comparison Data Movement Sorted

65 Selection Sort (Seçmeli sıralama) 213456 Comparison Data Movement Sorted

66 Selection Sort (Seçmeli sıralama) 213456 Comparison Data Movement Sorted

67 Selection Sort (Seçmeli sıralama) 213456 Comparison Data Movement Sorted  Largest

68 Selection Sort (Seçmeli sıralama) 213456 Comparison Data Movement Sorted

69 Selection Sort (Seçmeli sıralama) 213456 Comparison Data Movement Sorted

70 Selection Sort (Seçmeli sıralama) 213456 Comparison Data Movement Sorted

71 Selection Sort (Seçmeli sıralama) 213456 Comparison Data Movement Sorted

72 Selection Sort (Seçmeli sıralama) 213456 Comparison Data Movement Sorted

73 Selection Sort (Seçmeli sıralama) 213456 Comparison Data Movement Sorted  Largest

74 Selection Sort (Seçmeli sıralama) 213456 Comparison Data Movement Sorted

75 Selection Sort (Seçmeli sıralama) 213456 Comparison Data Movement Sorted

76 Selection Sort (Seçmeli sıralama) 213456 Comparison Data Movement Sorted

77 Selection Sort 213456 Comparison Data Movement Sorted

78 Selection Sort (Seçmeli sıralama) 213456 Comparison Data Movement Sorted  Largest

79 Selection Sort (Seçmeli sıralama) 123456 Comparison Data Movement Sorted

80 Selection Sort (Seçmeli sıralama) 123456 Comparison Data Movement Sorted DONE!

81 674523146339842 Merge Sort (Birleştirme sıralaması)

82 674523146339842 674523146339842

83 674523146339842 674523146339842 45231498

84 674523146339842 674523146339842 45231498 2398

85 674523146339842 674523146339842 45231498 2398 Merge

86 674523146339842 674523146339842 45231498 2398 23 Merge

87 674523146339842 674523146339842 45231498 2398 2398 Merge

88 674523146339842 674523146339842 45231498 23984514 2398

89 674523146339842 674523146339842 45231498 23984514 Merge 2398

90 674523146339842 674523146339842 45231498 23984514 Merge 2398

91 674523146339842 674523146339842 45231498 23984514 45 Merge 239814

92 674523146339842 674523146339842 45231498 23984514 Merge 98451423

93 674523146339842 674523146339842 45231498 23984514 Merge 9814 2345

94 674523146339842 674523146339842 45231498 23984514 Merge 2314 23 9845

95 674523146339842 674523146339842 45231498 23984514 Merge 23984514 2345

96 674523146339842 674523146339842 45231498 23984514 Merge 23984514 234598

97 674523146339842 674523146339842 45231498 23984514 6763342 23984514 234598

98 674523146339842 674523146339842 45231498 23984514 6763342 676 23984514 234598

99 674523146339842 674523146339842 45231498 23984514 6763342 676 Merge 23984514 234598

100 674523146339842 674523146339842 45231498 23984514 6763342 676 6 Merge 23984514 234598

101 674523146339842 674523146339842 45231498 23984514 6763342 676 Merge 239845146 234598

102 674523146339842 674523146339842 45231498 23984514 6763342 6763342 23984514676 14234598

103 674523146339842 674523146339842 45231498 23984514 6763342 6763342 Merge 23984514676 14234598

104 674523146339842 674523146339842 45231498 23984514 6763342 6763342 Merge 3323984514676 14234598

105 674523146339842 674523146339842 45231498 23984514 6763342 6763342 Merge 422398451467633 14234598

106 674523146339842 674523146339842 45231498 23984514 6763342 6763342 Merge 239845146764233 14234598

107 674523146339842 674523146339842 45231498 23984514 6763342 6763342 Merge 2398451464233 14234598 6 67

108 4523146339842 674523146339842 45231498 23984514 6763342 6763342 Merge 23984514633 14234598 633 6742

109 674523146339842 674523146339842 45231498 23984514 6763342 6763342 Merge 2398451464233 14234598 63342 67

110 4523146339842 674523146339842 45231498 23984514 6763342 6763342 Merge 239845146764233 14234598 6334267

111 4523146339842 674523146339842 45231498 23984514 6763342 6763342 Merge 239845146764233 234598 334267 14 6

112 674523146339842 674523146339842 45231498 23984514 6763342 6763342 Merge 239845146764233 234598 64267 6 14 33

113 674523146339842 674523146339842 45231498 23984514 6763342 6763342 Merge 239845146764233 144598 64267 614 23 33

114 674523146339842 674523146339842 45231498 23984514 6763342 6763342 Merge 239845146764233 142398 64267 61423 45 33

115 674523146339842 674523146339842 45231498 23984514 6763342 6763342 Merge 239845146764233 142398 63367 6142333 45 42

116 674523146339842 674523146339842 45231498 23984514 6763342 6763342 Merge 239845146764233 142398 63342 614233342 45 67

117 4523146339842 674523146339842 45231498 23984514 6763342 6763342 Merge 239845146764233 142345 63342 61423334245 98 67

118 4523146339842 674523146339842 45231498 23984514 6763342 6763342 Merge 239845146764233 14234598 6334267 6142333424567

119 4523146339842 674523146339842 45231498 23984514 6763342 6763342 Merge 239845146764233 14234598 6334267 614233342456798

120 674523146339842 674523146339842 45231498 23984514 6763342 6763342 239845146764233 14234598 6334267 614233342456798

121 674523146339842 614233342456798

122 Quick Sort (Hızlı sıralama)


"Veri Yapıları. Veri yapıları bilgisayar ortamında verilerin etkin olarak saklanması ve işlenmesi için kullanılan yapılardır. Karakter, Tamsayı ve Gerçel." indir ppt

Benzer bir sunumlar


Google Reklamları