Bir dizinin yarısı nedir ve nasıl belirlenir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Bir dizinin (veya sıralanmışsa dizinin "medyanı") yarısı, sıralanmışsa diziyi ikiye bölen, medyan veya medyan gibi bir öğedir: medyan, diziyi sıraladığınızda, diziyi ikiye ayıran ve medyan veya medyan gibi bir öğedir. Eğer öğe sayısı çift ise, medyan genellikle iki ortadaki öğenin aritmetik ortalaması olarak hesaplanır. Mülakatlarda "dizinin yarısı" bağlamında, N/2'den fazla kez görünen çoğunluk öğesinin aranması da kastedilebilir, burada N, dizideki öğe sayısıdır.
Dizinin yarısının tanımı bağlama bağlıdır:
-
Medyan (sıralanmış dizi veya k- en küçük öğeyi ararken):
- Diziyi sıralarız.
- Eğer
Ntek ise, medyanN/2indeksindeki öğedir. - Eğer
Nçift ise, medyanN/2 - 1veN/2indekslerindeki öğelerin aritmetik ortalamasıdır.
-
Çoğunluk öğesi (N/2’den fazla kez görünen):
- Boyer oy kullanma algoritmasını kullanırız.
- Bir
candidatevecountdeğişkeni oluştururuz. - Diziyi dolaşırız. Eğer mevcut öğe
candidate’a eşitse,count’u artırırız. Değilse vecount> 0 ise,count’u azaltırız. Eğercount= 0 ise, mevcut öğe yenicandidateolur vecount1 olarak ayarlanır. - İlk geçişten sonra,
candidatepotansiyel bir çoğunluk öğesidir. Bunu doğrulamak için ikinci bir geçiş yaparız ve gerçekten N/2’den fazla kez görünüp görünmediğini kontrol ederiz.
Swift'te medyanı belirleme örneği:
// Medyanı bulmak için sıralama
func findMedian(in array: [Int]) -> Double? {
guard !array.isEmpty else { return nil }
let sortedArray = array.sorted()
let n = sortedArray.count
if n % 2 == 1 {
return Double(sortedArray[n / 2])
} else {
return Double(sortedArray[n / 2 - 1] + sortedArray[n / 2]) / 2.0
}
}
Çoğunluk öğesini belirlemek için Swift'te örnek:
// Boyer oy kullanma algoritması
func findMajorityElement(in array: [Int]) -> Int? {
var candidate: Int? = nil
var count = 0
for element in array {
if count == 0 {
candidate = element
count = 1
} else if element == candidate {
count += 1
} else {
count -= 1
}
}
// Adayın gerçekten çoğunluk öğesi olup olmadığını kontrol et
var realCount = 0
if let candidate = candidate {
for element in array {
if element == candidate {
realCount += 1
}
}
if realCount > array.count / 2 {
return candidate
}
}
return nil // Çoğunluk öğesi yok
}
İşin doğrusu, mülakatçıyla "dizinin yarısı" ifadesinin tam olarak ne anlama geldiğini netleştirmek önemlidir.