2013-09-16 3 views
-1

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

<?php 
$count = 0; 
$temp = 0; 
$name = array("Suzuki", "Holden", "Jaguar", "Toyota", "Hyundai", "Ford", "Honda", "Mazda"); 
echo $name[0] . " " . $name[1] . " " . $name[2] . " " . $name[3] . " " . $name[4] . " " . $name[5] . " " . $name[6] . " " . $name[7] . "<p>"; 
for ($incount = 0; $incount <= 7; $incount++) { 
    if ($name[$incount] > $name[$incount + 1]) { 
     $temp = $name[$incount]; 
     $name[$incount] = $name[$incount + 1]; 
     $name[$incount + 1] = $temp; 
     echo $name[0] . " " . $name[1] . " " . $name[2] . " " . $name[3] . " " . $name[4] . " " . $name[5] . " " . $name[6] . " " . $name[7] . $count++ . "<p>"; 
    } 
} 
?> 
+1

Должна быть причина - почему вы не используете 'sort()'? –

+0

И какова ошибка? – zzlalani

+0

Помимо ошибки, вы не используете правильный алгоритм для сортировки пузырьков. Ему нужно две петли вместо одной. Проверьте мой ответ ниже для реализации сортировки пузыря в вашем случае – rakeshjain

ответ

5

здесь ошибка:

$name[$incount] > $name[$incount + 1] 

когда $incount = 7 то $incount +1 = 8, что не определено для вас ... потому что вы определили только 7 элементов ...

решение может быть только $incount < 7

+0

вы правильно указали неопределенную ошибку индекса. Но алгоритм, который ОП пытается реализовать, неверен. Ему нужно использовать два для петель вместо одного для сортировки пузырьков. – rakeshjain

+0

Да, вы определенно правы ... но он спрашивал о неопределенной ошибке ... и на самом деле довольно грустно видеть, что такой простой алгоритм написан неправильно ... –

-1
<?php 
$count = 0; 
$temp = 0; 
$name = array("Suzuki", "Holden", "Jaguar", "Toyota", "Hyundai", "Ford", "Honda", "Mazda"); 
echo $name[0] . " " . $name[1] . " " . $name[2] . " " . $name[3] . " " . $name[4] . " " . $name[5] . " " . $name[6] . " " . $name[7] . "<p>"; 
for ($incount = 0; $incount < 8; $incount++) { 
    if(isset($name[$incount + 1])) 
    if ($name[$incount] > $name[$incount + 1]) { 
     $temp = $name[$incount]; 
     $name[$incount] = $name[$incount + 1]; 
     $name[$incount + 1] = $temp;} 
     echo $name[0] . " " . $name[1] . " " . $name[2] . " " . $name[3] . " " . $name[4] . " " . $name[5] . " " . $name[6] . " " . $name[7] . $count++ . "<p>"; 

} 
?> 

Но Лучше использовать

<?php 
$count = 0; 
$temp = 0; 
$name = array("Suzuki", "Holden", "Jaguar", "Toyota", "Hyundai", "Ford", "Honda", "Mazda"); 
foreach($name as $f) echo $f." "; 
echo "<p>"; 
for ($incount = 0; $incount < 8; $incount++) { 
    if(isset($name[$incount + 1])) 
    if ($name[$incount] > $name[$incount + 1]) { 
     $temp = $name[$incount]; 
     $name[$incount] = $name[$incount + 1]; 
     $name[$incount + 1] = $temp;} 
     foreach($name as $f) echo $f." "; 
     echo $count++ . "<p>"; 
} 
?> 
+0

Надеюсь, что это работает .. –

+0

идеальный ответ ... –

+0

ли на самом деле не решить основной недостаток - вы только закодированный вокруг него. –

2

Вы не используете правильный алгоритм пузырьковой сортировки. Ему нужны две петли.

<?php 
$count = 0; 
$temp = 0; 
$name = array("Suzuki", "Holden", "Jaguar", "Toyota", "Hyundai", "Ford", "Honda", "Mazda"); 
echo $name[0] . " " . $name[1] . " " . $name[2] . " " . $name[3] . " " . $name[4] . " " . $name[5] . " " . $name[6] . " " . $name[7] . "<p>"; 
for ($incount = 0; $incount <= 7; $incount++) { 
    for ($innercount = $incount+1; $innercount <= 7; $innercount++) { 
     if ($name[$incount] > $name[$innercount]) { 
      $temp = $name[$incount]; 
      $name[$incount] = $name[$innercount]; 
      $name[$innercount] = $temp; 
      echo $name[0] . " " . $name[1] . " " . $name[2] . " " . $name[3] . " " . $name[4] . " " . $name[5] . " " . $name[6] . " " . $name[7] . $count++ . "<p>"; 
     } 
    } 
} 
?> 
Смежные вопросы