From 15da78be1c6d136964b9e4c9ebf0e0291fdbc7e8 Mon Sep 17 00:00:00 2001 From: Tunahan Turker Erturk <89503561+tunisch@users.noreply.github.com> Date: Mon, 19 Jan 2026 16:49:12 +0300 Subject: [PATCH 1/9] Add README for Searching Algorithms What are kinds of the Searching algorithms? --- searching-algotihms/README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 searching-algotihms/README.md diff --git a/searching-algotihms/README.md b/searching-algotihms/README.md new file mode 100644 index 0000000..31a3f58 --- /dev/null +++ b/searching-algotihms/README.md @@ -0,0 +1,13 @@ +# Searching Algortihms +## Searching + +Günümüzde veriler gitgide artan bir hal alıyor. Her insanın bir bilgisayarı ve telefonu olduğunu düşünürsek, terabaytlarca veri ediyor. Arama algoritmaları ise istediğim özellikteki verinin elimdeki veri setlerinde aranıp, bulunup getirilmesi demek. Bunun hızlı olmasına önem gösterilir. + +1. Linear Search +2. Binary Search +3. Binary Search Tree + + +### References: +1. [search-algorithm](https://en.wikipedia.org/wiki/Search_algorithm) +2. [why-we-need-searching-algorithms](https://www.bbc.co.uk/bitesize/guides/zgr2mp3/revision/1) From e85e34235ea7922710450bb3c368f19d76290476 Mon Sep 17 00:00:00 2001 From: Tunahan Turker Erturk <89503561+tunisch@users.noreply.github.com> Date: Mon, 19 Jan 2026 16:56:09 +0300 Subject: [PATCH 2/9] Add linear search algorithm documentation Added an explanation of the linear search algorithm, including examples and time complexity analysis. --- searching-algotihms/linear-search.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 searching-algotihms/linear-search.md diff --git a/searching-algotihms/linear-search.md b/searching-algotihms/linear-search.md new file mode 100644 index 0000000..1b15081 --- /dev/null +++ b/searching-algotihms/linear-search.md @@ -0,0 +1,15 @@ +# Linear Search Algorithm + +Linear search, tek tek elemanları dolandıktan sonra istediğim elemanın olup olmadığına bakmaktır. + +- Örneğin, [20,25,46,48] veri setini ele alalım. Benim aradığım eleman 25. İlk elemana gidiyorum ve değeri 20 sen değilsin diyorum. İkinci elemana gidiyorum ve değeri 25 evet sensin diyorum. Linear search algoritmam burada bitmiş oluyor. +- Big-o ya göre incelediğimizde bizim worst case'imiz neydi? Elemanın dizinin sonunda bulunmasıydı. Bu sebepten ötürü n elemanımız varsa big-o notasyonumuz otomatik olarak n oluyor. +- Ekstra Hafiza kullanmiyor + +Linear Search de worst case ; +- Aradigimizin elamanin listede en son da bulunmasi durumudur. Time Complex imiz -> O(n) olur. + +## References: + +1. [BBC-linear-search](https://www.bbc.co.uk/bitesize/guides/z7kkw6f/revision/7) +2. [linear-search-with-code](https://www.programiz.com/dsa/linear-search) From 79a554974167707a964de1e6cd1e49c6f7fbf016 Mon Sep 17 00:00:00 2001 From: Tunahan Turker Erturk <89503561+tunisch@users.noreply.github.com> Date: Mon, 19 Jan 2026 17:53:14 +0300 Subject: [PATCH 3/9] Add binary search algorithm documentation Added an explanation of the binary search algorithm, including its time complexity and examples. --- searching-algotihms/binary-search.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 searching-algotihms/binary-search.md diff --git a/searching-algotihms/binary-search.md b/searching-algotihms/binary-search.md new file mode 100644 index 0000000..e9218c2 --- /dev/null +++ b/searching-algotihms/binary-search.md @@ -0,0 +1,28 @@ +# Binary Search Algorithm + +İkili arama algoritması, elimizde bulunan **veri dizisini sıralı olduğunu** varsayıyor, bu durumu değiştirerek sonuca varmak istiyor. + +- İkili arama algoritması, **diziyi her seferinde ikiye bölerek ikili arama yapar**. Sıralı bir listem var ise benim Big-o logn olarak karşımıza çıkıyor. +- Aradığım sayı 15 ve benim değer kümem [10,15,20,16,22,36,23] diyelim. Binary Search bu diziyi manipüle ederek şu ifadeye dönüştürüyor. [10,15,16,20,22,23,36]. 36 sayısını en yüksek sayı, 10 sayısını en düşük sayı ilan ediyor. Benim aradığım sayı ile ortada kalan sayıyı kıyaslıyor eğer benim sayım büyükse kendinden küçük bütün sayıları siliyor. Ve kendine yeni bir ortanca belirliyor. Böylelikle gereksiz arama yapmaktan kurtarıyor. + +Screenshot 2026-01-19 173533 + +Time complexity: logn adimda istenilen degere ulasilabilir. +Buyuk input size li islemlerde cok avantajlidir + +image + + +## Example: + +image + +- En basta iki deger belirlenir lower & higher index olarak middle a bakilir. +- orta noktayi aliyoruz aradigimiz ile orta noktayi karsialstirip gereksiz tarafi atiyoruz. problem size i -> n/2 oldu +- sonra elde kalan listenin orta noktasi alinip eldeki aranan deger ile karsilastirilir, eleyerek devam edilir. + +## References: + +1. [binary-search](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) +2. [what-is-the-binary-search](https://www.mobilhanem.com/algoritma-dersleri-binary-search/) +3. [binary-search-algorthims](https://www.programiz.com/dsa/binary-search) From c48e75ba239a4aa1e9972f2b64cab70d5f8abac7 Mon Sep 17 00:00:00 2001 From: Tunahan Turker Erturk <89503561+tunisch@users.noreply.github.com> Date: Tue, 20 Jan 2026 23:44:16 +0300 Subject: [PATCH 4/9] Add binary search tree documentation created binary search tree --- searching-algotihms/binary-search-tree.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 searching-algotihms/binary-search-tree.md diff --git a/searching-algotihms/binary-search-tree.md b/searching-algotihms/binary-search-tree.md new file mode 100644 index 0000000..61a89a3 --- /dev/null +++ b/searching-algotihms/binary-search-tree.md @@ -0,0 +1 @@ +# Binary Search Tree From 677b21a4ea21e14b6649cec26b7b64ed35c7a2d7 Mon Sep 17 00:00:00 2001 From: Tunahan Turker Erturk <89503561+tunisch@users.noreply.github.com> Date: Tue, 20 Jan 2026 23:48:04 +0300 Subject: [PATCH 5/9] Enhance binary-search-tree.md with details and references Added explanation and references for Binary Search Tree. --- searching-algotihms/binary-search-tree.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/searching-algotihms/binary-search-tree.md b/searching-algotihms/binary-search-tree.md index 61a89a3..3fd0eba 100644 --- a/searching-algotihms/binary-search-tree.md +++ b/searching-algotihms/binary-search-tree.md @@ -1 +1,12 @@ # Binary Search Tree + +Bir düğüm her iki tarafa da referans verebiliyor. Sağ ve sol olarak. Sağ tarafından kendinden büyük elemanlar, sol tarafında ise kendinden küçük elemanlar bulunacak. + +image + +- Tree'ye eleman eklemek istediğimde root'dan başlıyorum. Örnek olarak ben 26 sayısını ağaç yapısına eklemek istiyorum. Root'a soruyorum senin değerin ne 56. Baştaki açıklamamızı hatırlayalım. Sağ tarafında kendinden büyük, sol tarafında kendinden küçük elemanlar var. O yüzden sırasıyla 56 ve 30 a kadar ilerliyorum. 30 bana benim sol tarafıma geçmelisin çünkü sen benden küçüksün diyor. Karşıma 22 değerinde olan düğüm çıkıyor ve 22 den büyük olduğum için sağ tarafına bir köşe çekiyorum ve 26 sayısını bağlıyorum. + +## References: +1. [binary-search-tree-nedir](https://tsafaelmali.medium.com/binary-search-tree-nedir-2e6fb0621d9) +2. [binary-search-anlamak](https://www.buraksenyurt.com/post/Binary-Search-Tree-yi-Anlamak) +3. [binary-search-tree-english-detail](https://www.geeksforgeeks.org/dsa/binary-search-tree-data-structure/) From ece6b2d79393aba887a8f0a55fe55ef64f8a6714 Mon Sep 17 00:00:00 2001 From: Tunahan Turker Erturk <89503561+tunisch@users.noreply.github.com> Date: Wed, 21 Jan 2026 22:23:53 +0300 Subject: [PATCH 6/9] Add explanation of binary search algorithm and complexities Binary search is an efficient search algorithm that requires a sorted array. The document explains its time complexity and the implications of adding new elements to the array. --- searching-algotihms/binary-search.md | 40 ++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/searching-algotihms/binary-search.md b/searching-algotihms/binary-search.md index e9218c2..6b68e71 100644 --- a/searching-algotihms/binary-search.md +++ b/searching-algotihms/binary-search.md @@ -1,5 +1,45 @@ # Binary Search Algorithm +**Binary search bir veri yapısı değildir, bir arama algoritmasıdır. Çalışabilmesi için temel bir şartı vardır: dizi sıralı olmak zorunda.** + +Diyelim ki elimizde sıralı bir dizi var: + +`[1, 3, 5, 7, 9]` + +- Bu dizide bir eleman aramak: + + - Zaman karmaşıklığı: O(log n) + +> Çünkü her adımda arama alanını ikiye bölersin. Güzel, hızlı, matematiksel bir zen durumu. + +Ama şimdi kritik nokta geliyor. + +- “Yeni eleman eklersem ne olur?” + +**Dizi sıralı kalmak zorunda.** + +Mesela 6 ekleyeceksin: + +`[1, 3, 5, 6, 7, 9]` + +Burada olan şey şu: + +- Doğru yeri bulmak → O(log n) (binary search ile) +``` +Ama… +Dizide o noktadan sonraki tüm elemanları sağa kaydırman gerekir. +``` +- Kaydırma maliyeti: + +**En kötü durumda: O(n)** + +> Sonuç: + +`Binary search + ekleme = O(n)` + +- Yani: + - **Binary search hızlı arar ama ekleme/silme konusunda berbat.** + İkili arama algoritması, elimizde bulunan **veri dizisini sıralı olduğunu** varsayıyor, bu durumu değiştirerek sonuca varmak istiyor. - İkili arama algoritması, **diziyi her seferinde ikiye bölerek ikili arama yapar**. Sıralı bir listem var ise benim Big-o logn olarak karşımıza çıkıyor. From 9308157ad807c5576acf368be534dce01b5f7c0b Mon Sep 17 00:00:00 2001 From: Tunahan Turker Erturk <89503561+tunisch@users.noreply.github.com> Date: Wed, 21 Jan 2026 22:27:48 +0300 Subject: [PATCH 7/9] Enhance Binary Search Tree documentation Expanded explanation of Binary Search Tree (BST) structure, insertion, and search complexities. Added visual representations and comparisons with arrays. --- searching-algotihms/binary-search-tree.md | 73 ++++++++++++++++++++++- 1 file changed, 72 insertions(+), 1 deletion(-) diff --git a/searching-algotihms/binary-search-tree.md b/searching-algotihms/binary-search-tree.md index 3fd0eba..62661d5 100644 --- a/searching-algotihms/binary-search-tree.md +++ b/searching-algotihms/binary-search-tree.md @@ -1,4 +1,75 @@ -# Binary Search Tree +# Binary Search Tree + +- BST bir veri yapısıdır. Kuralı basit: + +Sol alt ağaç < kök + +Sağ alt ağaç > kök + +``` + 5 + / \ + 3 8 + / \ \ + 2 4 9 +``` +- BST’de arama + +> Ortalama durumda: O(log n) +> Ağaç dengeliyse süper. + +- BST’de ekleme + +Yeni elemanı alırsın: + +Kökten başlarsın, Sağ mı sol mu diye karar verirsin ,Yaprakta eklenir.Kaydırma yok. Taşıma yok. Sadece aşağı doğru yürüyüş. + +- Ortalama durumda ekleme: O(log n) + +Ama burada evrenin küçük bir şakası var. + +> Eğer ağacı dengesiz kurarsan: + +``` +1 + \ + 2 + \ + 3 + \ + 4 +``` +Bu artık ağaç değil, utanmadan liste olmuş bir şeydir. + +- Arama: O(n) +- Ekleme: O(n) + +| Yapı | Arama | Ekleme | Gerçeklik | +| ----------------------------- | -------- | -------- | ----------------- | +| Sıralı dizi + Binary Search | O(log n) | **O(n)** | Kaydırma yüzünden | +| Binary Search Tree (ortalama) | O(log n) | O(log n) | Yapısal | +| Dengesiz BST | O(n) | O(n) | Liste kılığı | + + +image + +Dizilerde (Array) Ekleme ve Arama Performansı Sıralı bir dizide arama yapmak log n zaman alırken, bu diziye yeni bir elemanı sıralı bir şekilde eklemek O(n) zaman alır. Bunun sebebi, yeni bir eleman eklendiğinde dizideki diğer elemanların yer değiştirmek (taşınmak) zorunda kalmasıdır. Bu maliyetten kurtulmak için Binary Search Tree (İkili Arama Ağacı) yapısı kullanılır. +Binary Search Tree (BST) Yapısı ve Mantığı BST'de veriler, bağlı listelerdeki (linked list) gibi referanslar aracılığıyla tutulur; ancak burada her düğümün sağ ve sol olmak üzere iki referansı vardır,. + +Temel kural şudur: +- Bir düğümün sağ tarafında kendisinden büyük elemanlar bulunur. +- Bir düğümün sol tarafında kendisinden küçük elemanlar bulunur. + +Yeni Eleman Ekleme Süreci Yeni bir eleman (örneğin 18) eklenirken en baştaki düğümden başlanarak "bu eleman büyük mü küçük mü?" sorusu sorulur. Eleman büyükse sağa, küçükse sola gidilerek uygun yer bulunur. Bu yöntemle, her soruda ağacın bir tarafı elendiği için problem sürekli yarıya iner. Eğer ağaç iyi dağılmış (dengeli) ise, bir eleman eklemek log n zamanda tamamlanır. + +**Zaman Karmaşıklığı:En İyi ve En Kötü Durumlar** + +- Average Case (Ortalama Durum): Ağaç dengeli ve elemanlar sağa-sola eşit dağılmışsa, arama ve ekleme işlemleri log n karmaşıklığındadır. +- Worst Case (En Kötü Durum): Eğer ağaç dengesizse (örneğin sadece sol tarafa yığılmışsa), eleman eklemek veya aramak için neredeyse tüm elemanlara bakmak gerekebilir. Bu durumda zaman karmaşıklığı O(n) olur,. +- BST ve Diziler Arasındaki Fark Dizilerin aksine, Binary Search Tree yapısında "random access" (rastgele erişim) yoktur; yani "bana beşinci elemanı getir" gibi doğrudan bir erişim yapılamaz. Ancak dengeli bir ağaçta hem arama hem de yeni eleman ekleme işlemleri log n süresinde yapılabildiği için dizilere göre çok daha hızlı sonuç verir +- Binary searchte bu islemi yapmak time complex te O(logn) zaman aliyor ama diyelim ki yeni eleman eklemek istersek bu arrray[] e bunuda sirali olarak tut yine aramalarda kulalncam dersek bunu yapmam time complex te O(n) islem oluyor (butun elemanlar tasindigi icin bir yere tasinirken n tane islem yapmis oluyoruz yani ) + +Burada yapacagimiz sey; Bir düğüm her iki tarafa da referans verebiliyor. Sağ ve sol olarak. Sağ tarafından kendinden büyük elemanlar, sol tarafında ise kendinden küçük elemanlar bulunacak. From d06de55a8f1af7499ed913ed2f76e48ce294feca Mon Sep 17 00:00:00 2001 From: Tunahan Turker Erturk <89503561+tunisch@users.noreply.github.com> Date: Wed, 21 Jan 2026 22:49:23 +0300 Subject: [PATCH 8/9] Enhance binary search tree documentation Added explanation about binary search tree insertion complexity. --- searching-algotihms/binary-search-tree.md | 1 + 1 file changed, 1 insertion(+) diff --git a/searching-algotihms/binary-search-tree.md b/searching-algotihms/binary-search-tree.md index 62661d5..dbe77c4 100644 --- a/searching-algotihms/binary-search-tree.md +++ b/searching-algotihms/binary-search-tree.md @@ -1,4 +1,5 @@ # Binary Search Tree +Ram de Binary Search e gore farkli depolandigi icin bu yuzden yeni veri eklemede O(n) time complex durumu olusmaz. bos olan node a eklenerek sistem devam eder. - BST bir veri yapısıdır. Kuralı basit: From db8c803a580fe72b74b9656856f432e5e0cb130b Mon Sep 17 00:00:00 2001 From: Tunahan Turker Erturk <89503561+tunisch@users.noreply.github.com> Date: Fri, 23 Jan 2026 17:39:36 +0300 Subject: [PATCH 9/9] Update Binary Search Tree explanation Clarified the explanation of Binary Search Tree and its properties. --- searching-algotihms/binary-search-tree.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/searching-algotihms/binary-search-tree.md b/searching-algotihms/binary-search-tree.md index dbe77c4..0c658af 100644 --- a/searching-algotihms/binary-search-tree.md +++ b/searching-algotihms/binary-search-tree.md @@ -1,7 +1,11 @@ # Binary Search Tree Ram de Binary Search e gore farkli depolandigi icin bu yuzden yeni veri eklemede O(n) time complex durumu olusmaz. bos olan node a eklenerek sistem devam eder. +- BST bir veri yapısıdır. -- BST bir veri yapısıdır. Kuralı basit: +**[7, 5, 1, 8, 3, 6, 0, 9, 4, 2]** + +> ilk gelen root tur, Burada root: 7 dir +- Kuralı basit: Sol alt ağaç < kök