|
|
|
| Здарова народ!!!
Задача. Составить алгоритм и программу поиска наименьшего элемента массива X(n).
<?php
$arr = array(14,21,37,2,4,6,4,7,8,44,2,2,23,44);
function small_value($val)
{
$smallest = 0;
for($i=0; $i<count($val); $i++)
{
if($val[$i] < $smallest)
{
$smallest = $val[$i];
}
}
return $smallest;
}
echo small_value($arr); // выводить 0
?>
|
Почему? | |
|
|
|
|
|
|
|
для: Jovidon
(23.04.2013 в 10:15)
| | Неужели не понятно почему? Сами же присваивание 0. минимальный должен быть на старте равен первому элементу массива, array_shift используйте. А вообще, в топку весь алгоритм, есть встроенная фция min | |
|
|
|
|
|
|
|
для: psychomc
(23.04.2013 в 10:30)
| | почуму условия не выполняеться?
Это задача по информатике нелзя использовать язык php а что касаеться цикла или конструкци if else но во всех языках есть. | |
|
|
|
|
|
|
|
для: Jovidon
(23.04.2013 в 10:34)
| | Замените в вашем коде $smallest = 0; на $smallest =$val[0]; и в цикле начинайте не с 0 а с 1. Всё | |
|
|
|
|
|
|
|
для: Jovidon
(23.04.2013 в 10:15)
| |
<?php
$arr = array(14,21,37,2,4,6,4,7,8,44,2,2,23,44);
function small_value($val)
{
for($i=0; $i<count($val); $i++)
{
if ($i==0) $smallest = $val[$i];
if($val[$i] < $smallest)
{
$smallest = $val[$i];
}
}
return $smallest;
}
echo small_value($arr); // выводить 0
?>
|
| |
|
|
|
|
|
|
|
для: Lotanaen
(23.04.2013 в 10:31)
| | Мде. И зачем на каждой итерации этот лишний if? | |
|
|
|
|
|
|
|
для: psychomc
(23.04.2013 в 10:36)
| | ну да, просто $smallest = $val[0]; в первом варианте прописать | |
|
|
|
|
|
|
|
для: Lotanaen
(23.04.2013 в 10:31)
| | ООо спаисбо :))
случайно не знаете какую нибудь (сайт, книги) сборник задач с решениями по информатике?
Готовлюс для поступления в университет. Буду очень блогадарен. | |
|
|
|
|
|
|
|
для: Jovidon
(23.04.2013 в 10:15)
| | И зачем этот алгоритм? Есть ведь min(array).
echo min($arr); //2 | |
|
|
|
|
|
|
|
для: confirm
(23.04.2013 в 11:32)
| | Да min это отлично!
Но это задача по информатике. (php нельзя использовать) | |
|
|
|
|
|
|
|
для: Jovidon
(23.04.2013 в 17:15)
| | Понятно, ну тогда лучше так:
<?
$arr = array(14,21,37,2,4,6,4,7,8,44,2,2,23,44);
$n=0;
for($i=0, $k=count($arr); $i<$k; $i++) {
if($arr[$n] > $arr[$i]) $n=$i;
}
echo $arr[$n];
|
Кстати - php нельзя использовать. А почему тогда count используете? | |
|
|
|
|
|
|
|
для: confirm
(23.04.2013 в 18:32)
| | Спасибо!!!
с count - ом разбирусь | |
|
|
|
|
|
|
|
для: Jovidon
(24.04.2013 в 09:53)
| | А что с ним разбираться, если пишется абстрактно, как алгоритм, то никаких count быть не должно. Да и вообще, даже с его применением, у вас есть "баг" в коде.
Такие алгоритмы пишутся для быстрого поиска, сортировки, расстановки... А у вас что получается:
for($i=0; $i<count($val); $i++)
А условие цикла проверяется при каждой итерации, и получается, что при каждой итерации выполняется подсчет количества элементов массива, что никак не вяжется с задачей алгоритма для быстрого... Множество раз выполняется пустая работа. Подсчет количества элементов нужно производить один раз - при входе в цикл, так как написано у меня.
Но, если код не привязан к конкретному языку, использовать РНР нельзя, то значит и другое тоже нельзя. Значит цикл надо писать так:
<?
for($i=0; @$arr[$i]; $i++) {
if($arr[$n] > $arr[$i]) $n=$i;
}
|
Но и в данном случае есть РНР-след - собака подавляющая. Но если в рамках РНР отключены предупреждения, то все будет ОК, и собака не нужна. То есть это только для просмотра этого цикла в РНР собака, например JavaScript исполнит это же самое без ругани, ошибок, а тем более исключений:
<script>
arr = [14,21,37,2,4,6,4,7,8,44,2,2,23,44];
n=0;
for(i=0; arr[i]; i++) {
if(arr[n] > arr[i]) n=i;
}
alert(arr[n]);
</script>
|
И нет никаких count, а проверяется возвращаемый элемент массива, если он отсутствует в текущей итерации, то цикл прекращается. | |
|
|
|
|
|
|
|
для: confirm
(24.04.2013 в 10:12)
| | А если в массиве есть ноль?
arr = [14,21,37,0,2,4,6,4,7,8,44,2,2,23,44];
|
Думаю вообще без привязки к языку не выйдет.
Либо в php будет isset() или key_exists(), либо в JS будет !==undefined, либо что-то еще в других языках. | |
|
|
|
|
|
|
|
для: Sfinks
(24.04.2013 в 11:25)
| | Ну вас за язык тянули? :)
Я это прекрасно знаю, и сперва оставил автору PS, а затем удалил. Человеку надо давать возможность думать. | |
|
|
|
|
|
|
|
для: confirm
(24.04.2013 в 11:29)
| | =) | |
|
|
|
|
|
|
|
для: Sfinks
(24.04.2013 в 11:25)
| | Кстати, для JS не !==undefined, а просто !=undefined | |
|
|
|
|
|
|
|
для: confirm
(24.04.2013 в 10:12)
| | Очень блогадарен за все!!!
Посоветуй какую небудь книгу или сайт, чтобы изучать алгаритми.
Для поступления в университет очень важно. | |
|
|
|
|
|
|
|
для: Jovidon
(24.04.2013 в 11:40)
| | Набираете в Гугле (Яшка тупой, в нем только мыльные оперы искать) "математика алгоритмы", и выбирай не хочу :) | |
|
|
|