Divide And Conquer Metodu ile Bir Dizideki En Büyük ve En Küçük Sayıyı Bulan PHP Kodu

!```php (php-logo.jpg){right}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 http://www.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]); } }