Divide And Conquer metodu, bir problemi daha küçük alt problemlere bölmek, küçük problemleri çözmek ve bunları birleştirmek anlamına gelmektedir.
Aşağıdaki ufak kod parçası, bir dizideki (sıralı olmasına gerek yok) en büyük ve en küçük elemanları divide and conquer yöntemi ile bulur.
Karmaşıklığı O(n)’dir.
For foreigners: The algorithm bellow find biggest and smallest elements in an unsorted array using divide and conquer method. It’s complexity is O(n). Educational purposes only. There are algorithms which is better to do that (due to recursion overhead).
Kod Parçası
<?php /* Yazar: Umut Benzer https://ubenzer.com/ Kullanım: find(array(dizi elemanları)); */ echo var_dump(find(array(8,2,7,2003, 2000, 19, 3, 1, 89, 90, 4,80, 90))); function find($dizi) { if(count($dizi) > 1) { $b = array_slice ($dizi, 0, round(count($dizi) / 2,0, PHP_ROUND_HALF_DOWN)); $c = array_slice ($dizi, round(count($dizi) / 2,0, PHP_ROUND_HALF_DOWN)); list($min_left, $max_left) = find($b); list($min_right, $max_right) = find($c); return ( array( ($min_left < $min_right ? $min_left : $min_right), ($max_left > $max_right ? $max_left : $max_right) )); } else { return array($dizi[0],$dizi[0]); } }
‘de, da’ eki nasıl yazılır?
Almanya’da nasıl ehliyet aldım?
Almanya’dan kalıcı oturuma izni (niederlassungserlaubnis) nasıl alınır?
Berlin’de yaşayanların hayatını kolaylaştıracak 10 web sitesi
Almanya’da nasıl ehliyet aldım?
Bir şirket neden uzaktan çalışmaya (remote working) izin verir?
-de -da eki ne zaman ayrı yazılır?
Almanya’ya gelmek için yapılan bürokratik işlemler