2016-07-16 4 views
0

У меня есть код, который я написал, и он работает очень хорошо. Кроме того, я не уверен, что то, что я написал, является линейным или бинарным поиском ?! Я действительно запутался в различиях. Может кто-то прояснить различия и мой код, чтобы я мог объяснить это кому-то?Линейный или двоичный поиск? -PHP

-Код ниже выполняет поиск значения, введенного пользователем. И проходит через CSV-файл данных. Затем я сохраняю все значения в новый массив, который имеет результаты. Надеюсь, это имеет смысл.

Я просто хочу знать, является ли мой код линейным или двоичным? Я так запутался о них *

$SearchThis = isset($_POST['Search']) ? $_POST['Search'] : ''; 
//empty() 
$SearchThis = !empty($_POST['Search']) ? $_POST['Search'] : ''; 



// Grabs the csv file (and its existing data) and makes it into an array 
$csv = array(); 
$lines = file('data/StaffData.csv', FILE_IGNORE_NEW_LINES); 
foreach ($lines as $key => $value) 
{ 
    $csv[$key] = str_getcsv($value); 
} 



//A new array which will display the search results 
$new_csv = array(); 

//This displays which rows have matched the search (it is put in an array) 

//Looks through full names 
$keys = array_keys(array_column($csv, 0), $SearchThis); // original code 
foreach($keys as $index) {        // Iterate over the keys 
    $new_csv[] = $csv[$index];       // Copy the matching rows to our new array 
} 
//Looks through phone numbers 
$keys = array_keys(array_column($csv, 1), $SearchThis); // original code 
foreach($keys as $index) {        // Iterate over the keys 
    $new_csv[] = $csv[$index];       // Copy the matching rows to our new array 
} 
//Looks through gender 
$keys = array_keys(array_column($csv, 2), $SearchThis); // original code 
foreach($keys as $index) {        // Iterate over the keys 
    $new_csv[] = $csv[$index];       // Copy the matching rows to our new array 
} 
//Looks through Birthday 
$keys = array_keys(array_column($csv, 3), $SearchThis); // original code 
foreach($keys as $index) {        // Iterate over the keys 
    $new_csv[] = $csv[$index];       // Copy the matching rows to our new array 
} 

//Looks through Type of work 
$keys = array_keys(array_column($csv, 4), $SearchThis); // original code 
foreach($keys as $index) {        // Iterate over the keys 
    $new_csv[] = $csv[$index];       // Copy the matching rows to our new array 
} 

ответ

0

ваш код делает линейный поиск, бинарный поиск требует, чтобы данные отсортированы, в вашем случае его обычный файл, а также в двоичном поиске вы начать поиск из середины и сравните значение вашего поиска со значением в середине и решите, идти ли влево или вправо в зависимости от того, как сортируются ваши данные. Надеюсь, это помогло немного.

+0

Thanks Mehdi !! Это имеет смысл! Быстро и просто, что мне нужно было услышать! Я не могу принять ваш ответ, потому что вы так быстро ответили ему haha. Но я приму это через несколько минут :-) –

+0

не беспокоится, я могу помочь: D –

Смежные вопросы