DSA

Paylaşılan Bellekte Eşzamanlı Birleştirme Sıralaması
2026

Paylaşılan Bellekte Eşzamanlı Birleştirme Sıralaması

Bir 'n' sayısı ve bir n sayısı verildiğinde, Eşzamanlı Birleştirme Sıralaması'nı kullanarak sayıları sıralayın. (İpucu: shmget, shmat sistem çağrılarını kullanmayı deneyin). Bölüm 1: Algoritma (NASIL?) Biri sol yarı için, biri sağ yarı için olmak üzere yinelemeli olarak iki alt süreç yapın. Bir işlem için dizideki öğe sayısı 5'ten azsa Eklemeli Sıralama gerçekleştirin. Daha sonra iki çocuğun ebeveyni sonucu birleştirir ve ebeveyne geri döner ve bu böyle devam eder. Peki bunu nasıl eşzamanlı hale getirirsiniz? Bölüm 2: Mantıksal (NEDEN?) Bu sorunun çözümünün önemli kısmı algoritmik değil, İşletim Sistemi ve çekirdek kavramlarını açıklamaktır. Eşzamanlı sıralamayı başarmak için iki işlemin aynı dizide aynı anda çalışmasını sağlayacak bir yola ihtiyacımız var. İşleri kolaylaştırmak için Linux, basit API uç noktaları aracılığıyla çok sayıda sistem çağrısı sağlar. Bunlardan ikisi shmget() (paylaşılan bellek tahsisi için) ve shmat() (paylaşılan bellek işlemleri için). Çatalladığımız alt süreçler arasında paylaşılan bir hafıza alanı yaratıyoruz. Her bölüm, sıralanan sol ve sağ çocuklara bölünmüştür; ilginç kısım, aynı anda çalışıyor olmalarıdır! Shmget(), çekirdeğin her iki süreç için de paylaşılan bir sayfa ayırmasını ister. Geleneksel fork() neden çalışmıyor? Cevap fork() fonksiyonunun gerçekte ne yaptığında yatıyor. Belgelere göre 'fork(), çağrı sürecini kopyalayarak yeni bir süreç oluşturur'. Alt süreç ve ana süreç ayrı bellek alanlarında çalışır. fork() zamanında her iki bellek alanı da aynı içeriğe sahiptir. İşlemlerden birinin gerçekleştirdiği bellek yazmaları, dosya tanımlayıcı (fd) değişiklikleri vb. işlemler diğerini etkilemez. Bu nedenle paylaşılan bir hafıza bölümüne ihtiyacımız var.

Bir dizinin minimum ayarlama maliyetini bulun
2026

Bir dizinin minimum ayarlama maliyetini bulun

Pozitif tamsayılardan oluşan bir dizi verildiğinde, dizideki her bir öğeyi, dizideki bitişik öğeler arasındaki fark belirli bir hedefe eşit veya daha az olacak şekilde değiştirin. Yeni ve eski değerler arasındaki farkların toplamı olan düzeltme maliyetini en aza indirmemiz gerekiyor. Temel olarak ?|A[i] - Anew[i]|'yi küçültmeliyiz. nerede 0? Ben ? n-1, n, A[]'nın boyutudur ve Anew[], komşu farkı hedeften küçük veya hedefe eşit olan dizidir. Dizinin tüm elemanlarının M = 100 sabitinden küçük olduğunu varsayalım.

Belirli bir listeyi, değişen minimum maksimum öğelerden oluşacak şekilde yeniden düzenleyin
2026

Belirli bir listeyi, değişen minimum maksimum öğelerden oluşacak şekilde yeniden düzenleyin

Bir tamsayı listesi verildiğinde, yalnızca liste işlemlerini kullanarak alternatif minimum maksimum öğelerden oluşacak şekilde listeyi yeniden düzenleyin. Listenin ilk elemanı listedeki tüm elemanların minimum, ikinci elemanı ise maksimum olmalıdır. Benzer şekilde, üçüncü öğe bir sonraki minimum öğe olacak ve dördüncü öğe bir sonraki maksimum öğe olacak ve bu böyle devam edecek. Ekstra alan kullanımına izin verilmez. Örnekler:

k Gün sonrasında Etkin ve Etkin Olmayan hücreler
2026

k Gün sonrasında Etkin ve Etkin Olmayan hücreler

n > 3 olmak üzere n boyutunda bir ikili dizi verildiğinde. Dizideki doğru (veya 1) değer etkin, yanlış (veya 0) ise etkin olmadığı anlamına gelir. Bir k sayısı verildiğinde görev, k gün sonra aktif ve inaktif hücrelerin sayısını bulmaktır. Her günün ardından, i'inci hücrenin durumu, eğer sol ve sağ hücreler aynı değilse aktif hale gelir, eğer sol ve sağ hücreler aynı ise (her ikisi de 0 veya her ikisi de 1) pasif hale gelir.

Enterpolasyon Araması
2026

Enterpolasyon Araması

n adet düzgün dağıtılmış değerden oluşan sıralanmış bir dizi verildiğinde arr[], dizideki belirli bir x öğesini arayacak bir fonksiyon yazın. Doğrusal Arama, öğeyi O(n) sürede bulur, Jump Search O(n) sürede ve İkili Arama O(log n) sürede bulur. Enterpolasyon Araması, sıralanmış bir dizideki değerlerin eşit şekilde dağıtıldığı örnekler için İkili Aramaya göre bir gelişmedir. Enterpolasyon, ayrı bir bilinen veri noktaları kümesi aralığı içinde yeni veri noktaları oluşturur. İkili Arama kontrol etmek için her zaman ortadaki öğeye gider. Öte yandan enterpolasyon araması, aranan anahtarın değerine göre farklı konumlara gidebilir. Örneğin, anahtarın değeri son elemana daha yakınsa, enterpolasyon araması büyük ihtimalle aramaya son tarafa doğru başlayacaktır. Aranacak konumu bulmak için aşağıdaki formülü kullanır.

Caddeyi Geçmek İçin Gereken Minimum Başlangıç ​​Enerjisi
2026

Caddeyi Geçmek İçin Gereken Minimum Başlangıç ​​Enerjisi

Pozitif ve negatif sayıları içeren bir dizi verildi. Dizi, sokağın bir ucundan diğer ucuna kadar olan kontrol noktalarını temsil eder. Pozitif ve negatif değerler o kontrol noktasındaki enerji miktarını temsil eder. Pozitif sayılar enerjiyi artırır, negatif sayılar ise azaltır. Enerji seviyesi hiçbir zaman 0 ya da 0'ın altına düşmeyecek şekilde caddeyi geçmek için gereken minimum başlangıç ​​enerjisini bulun.