Python ile Dizi İçerisindeki En Büyük Üç Sayıyı Bulma
Python kullanarak örnek algoritma sorularını çözdüğümüz serimizin on üçüncü sorusuna geçelim:
- Bir dizi içerisinde sadece bir kez kullanılan ilk elemanı bulma:
- Örnek girdi: [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
- Örnek çıktı: [9, 6, 5]
- Çözüm Yolu: sort() Metodu
def en_buyuk_uc_sayi(dizi):
dizi.sort(reverse=True)
return dizi[:3]
# Örnek kullanım:
giris_dizi = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
cikis = en_buyuk_uc_sayi(giris_dizi)
print("Sıralama Kullanarak Bulunan Üç Sayı:", cikis) # [9, 6, 5]
Yukarıdaki kodumuzda, en_buyuk_uc_sayi
adında bir fonksiyon tanımladık. Fonksiyonumuzda, reverse=True
argümanını kullanarak sort()
metodundaki sıralamayı büyükten küçüğe olacak şekilde gerçekleştirdik. Ardından dilimleme yöntemini kullanarak (dizi[:3]
) en büyük 3 sayıyı döndürdük. Kodu çalıştırmak için: Trinket
- Çözüm Yolu: Lineer Tarama
def en_buyuk_uc_sayi(dizi):
dizi.sort(reverse=True)
return dizi[:3]
# Örnek kullanım:
giris_dizi = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
cikis = en_buyuk_uc_sayi(giris_dizi)
print("Sıralama Kullanarak Bulunan Üç Sayı:", cikis) # [9, 6, 5]
Yukarıdaki kodumuzda, en_buyuk_uc_sayi_lineer
adında yeni bir fonksiyon tanımladık. Bu fonksiyon, aldığı sayı listesinden en büyük üç sayıyı lineer tarama yöntemiyle bulmayı amaçlar.
Fonksiyonun başlangıcında, max1
, max2
ve max3
adında üç değişken tanımlıyoruz. Bu değişkenler sırasıyla en büyük, ikinci en büyük ve üçüncü en büyük sayıları tutmak için kullanılır. Başlangıç değerleri olarak ‘-inf’ (negatif sonsuz) atandı, böylece bu değişkenler ilk karşılaştıkları herhangi bir sayıdan küçük olacaktır.
Dizi içindeki her sayıyı tek tek dolaşarak, bu sayının en büyük üç sayıdan hangisiyle karşılaştırılması gerektiğini kontrol ediyoruz. Eğer sayı max1
‘den büyükse, max1
‘i max2
‘ye, max2
‘yi max3
‘e atayarak en büyük değeri max1
‘e atıyoruz. Aynı mantık, sayı max1
ile max2
arasında veya max2
ile max3
arasında olduğunda da uygulanır.
Tüm dizi bu şekilde tarandıktan sonra, max1
, max2
ve max3
değişkenlerindeki değerler en büyük üç sayıyı temsil eder. Bu üç sayıyı bir liste olarak döndürüyoruz.
Son olarak, bir örnek dizi olan giris_dizi
ile bu fonksiyonu test ediyoruz. Sonuç olarak [9, 6, 5] değerlerini elde ediyoruz, bu da en büyük üç sayıdır. Bu yöntem, diziyi sadece bir kere tarayarak sonucu bulduğu için lineer zamanda çalışır ve büyük diziler için oldukça verimlidir. Kodu çalıştırmak için: Trinket