Phát triển Web
2012
132
www.izwebz.com Demon Warlock
Output:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Giải thích đoạn code trên
Đánh số key cho mảng ở trên (chú ý hen, trong C thì các chỉ số là index nhưng trong PHP lại là
key).
9 -> a[0]; 8 -> a[1]; 7-> a[2]; 6->a[3]; 5->a[4]; 4->a[5]; 3->a[6]; 2->a[7]; 1->a[8]; 0->a[9];
Ở vòng for đầu tiên với $i=0 sẽ thực hiện vòng lặp for thứ hai từ vị trí thứ 9 xuống vị trí thứ 0
của mảng trên, và bắt đầu so sánh nếu số trước lớn hơn số sau thì hoán vị hai số đó. Ví dụ giá trị
của a[9] =0 và a[8] =1; rõ ràng a[8] =1 (số trước) > a[9]=0 (số sau). Thỏa mãn điều kiện if ở trên
nên thực hiện hoán vị hai số này và tiếp tục so sánh như vậy cho tới j=1; như vậy sau giá trị $i=0
và chạy vòng for thứ hai thì phần tử 0 tức là giái trị của a[9] sẽ được đẩy lên đầu. (phần tử nhẹ
nhất nổi lên đầu.).Như vậy có thể hiểu ngay sau khi tăng $i lên một thì giá trị =1 trong mảng $a
sẽ đứng kế sau giá trị 0 trong mảng $a.
/*
Author: NguyenKien.
Description: code for Selection Sort.
Date: 4/10/2010.
*/
<?php
$b = array(9, 8, 7, 6, 5, 4, 3, 2, 1, 0);
$i=0;
$j=0;
$temp =0;
$min =0;
for ($i=0; $i<count($b); $i++) {
$min =$i;
for ($j=$i+1; $j <count($b); $j++) {
if ($b[$j] < $b[$min])
{
$min =$j;
$temp =$b[$i];
$b[$i] = $b[$min];
$b[$min] =$temp;
}
}
}
foreach ($b as $value)
echo $value." ,";
?>