💻 Bilgisayar, 💾 Programlama

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

PHP LogoDivide 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]);
	}
}
👋 🚨 Yeni yazılardan haberdar olmak ister misiniz? 👇

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir