0Pricing
Go Academy · Ders

Sıralı Verilerde Arama

İkili arama yapın

Sıralı Verilerde Arama, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Go Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Go Academy kursu toplamda 4 dersten oluşur.

Sıralanmış Verilerde Neden Arama Yapılır

Bir dilim sıralandıktan sonra, her öğeyi taramak yerine ikili arama kullanarak öğeleri çok daha hızlı bulabilirsiniz.

Go'nun sort paketi, logaritmik zamanda çalışan arama yardımcıları sağlar.

Doğrusal ve İkili Arama

Doğrusal arama her öğeyi tek tek denetler (O(n)). İkili arama her adımda arama aralığını yarıya indirir (O(log n)); ancak bunun için verilerin önce sıralanmış olması gerekir.

sort.SearchInts

sort.SearchInts, bir değerin bulunduğu veya dilimi sıralı tutmak için ekleneceği dizini bulur. Dilim önceden artan düzende sıralanmış olmalıdır.

package main

import (
	"fmt"
	"sort"
)

func main() {
	nums := []int{1, 3, 5, 7, 9}
	i := sort.SearchInts(nums, 5)
	fmt.Println("index:", i)
}

Eşleşmeyi Doğrulama

SearchInts, değer mevcut olmasa bile bir dizin döndürür (ekleme noktası). i < len(s) && s[i] == target denetimini yaparak her zaman doğrulayın.

package main

import (
	"fmt"
	"sort"
)

func main() {
	nums := []int{1, 3, 5, 7}
	target := 4
	i := sort.SearchInts(nums, target)
	found := i < len(nums) && nums[i] == target
	fmt.Println("index:", i, "found:", found)
}

Ekleme Noktası

Bir değer eksik olduğunda, döndürülen dizin, sıralamayı korumak için onu eklemeniz gereken yerdir. Burada 4, 2. dizine yerleştirilir.

package main

import (
	"fmt"
	"sort"
)

func main() {
	nums := []int{1, 3, 5, 7}
	i := sort.SearchInts(nums, 4)
	fmt.Println("insert 4 at index:", i)
}

SearchStrings

sort.SearchStrings da sıralanmış bir dize dilimi için aynı işlemi yapar.

package main

import (
	"fmt"
	"sort"
)

func main() {
	words := []string{"apple", "cherry", "mango"}
	i := sort.SearchStrings(words, "cherry")
	fmt.Println("index:", i)
}

Genel sort.Search

sort.Search esnek temel işlevdir. Buna bir uzunluk ve önce false, ardından true döndüren bir f işlevi verirsiniz; işlev, f değerinin doğru olduğu en küçük dizini döndürür.

package main

import (
	"fmt"
	"sort"
)

func main() {
	nums := []int{2, 4, 6, 8, 10}
	i := sort.Search(len(nums), func(i int) bool {
		return nums[i] >= 6
	})
	fmt.Println("first >= 6 at index:", i)
}

Eşikten Büyük İlk Öğeyi Bulma

sort.Search, koşulun doğruya döndüğü sınırı bulduğundan, eşikten büyük ilk değer gibi sorgular için oldukça kullanışlıdır.

package main

import (
	"fmt"
	"sort"
)

func main() {
	scores := []int{10, 20, 30, 40}
	i := sort.Search(len(scores), func(i int) bool {
		return scores[i] > 25
	})
	fmt.Println("first > 25:", scores[i])
}

Önce Sıralanmış Olmalıdır

İkili arama düzene dayanır. Dilim sıralanmış değilse sonuçlar anlamsızdır. Aramadan önce her zaman sıralayın.

package main

import (
	"fmt"
	"sort"
)

func main() {
	nums := []int{9, 1, 5, 3}
	sort.Ints(nums)
	i := sort.SearchInts(nums, 5)
	fmt.Println(nums, "-> index of 5:", i)
}

Performans Kazancı

Bir milyon öğeden oluşan bir dilimde doğrusal arama bir milyon öğeyi denetleyebilirken ikili arama yaklaşık 20 öğeyi denetler. Bir kez sıralamanın maliyeti, çok sayıda arama boyunca karşılığını verir.

Arama Yardımcısını Seçme

Özet:

  • sort.SearchInts / SearchStrings / SearchFloat64s - türü belli dilimler
  • sort.Search - dizinlenebilir her türlü veri üzerinde özel koşul

Kısa Kontrol

4 değerini içermeyen sıralanmış bir dilimde sort.SearchInts(s, 4) çağrısı yapıyorsunuz. Ne döndürür?

Özet

Sıralanmış verilerde ikili aramayla arama yapma:

  • Veriler önce sıralanmış olmalıdır
  • Yardımcılar bir dizin veya ekleme noktası döndürür
  • Eşleşmeleri eşitlik denetimiyle doğrulayın
  • sort.Search özel koşulları ele alır

Sıkça Sorulan Sorular

“Sıralı Verilerde Arama” dersi ücretsiz mi?

Evet — “Sıralı Verilerde Arama” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Go Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Go Academy kursu toplamda 4 dersten oluşur.

“Sıralı Verilerde Arama” dersinde ne öğreneceğim?

İkili arama yapın Go Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Go Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Go Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Sıralı Verilerde Arama” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Go Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Go Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Dilimleri Sıralama
  2. Özel Sıralama Düzenleri
  3. Sıralı Verilerde Arama
  4. Kararlı Sıralama
← Go Academy Sayfasına Dön