Sắp xếp theo thứ tự tăng dần

hello mọi người, mình học php, luyện mấy cái thuật toán thấy khó quá, mình hiểu các vòng lặp như nào nhưng khi áp dụng vào , suy nghĩ hướng làm thì ko sao hiểu được,
rất mong nhận được lời giải thích và đôi lời khuyên giúp mình, mình xin cảm ơn
vd:

$a=[2,4,3,6,5,9,7];
$tmp="";
for($i=0;$i<6;$i++){
for($j=$i+1;$j<7;$j++){
if($a[$i]>$a[$j]){
$tmp=$a[$i];
$a[$j]=$a[$i];
$tmp=$a[$j];
}
}
}
for($i=0;$i<7;$i++){
echo $a[$i];
}

Hi there,

Lời khuyên đầu tiên, cậu nên format lại code của cậu :smile: Nó sẽ giúp cậu nhìn thấy lỗi nhanh hơn :wink:
Tớ có thấy cậu đã implement 1 giải thuật sắp xếp đơn giản, cơ mà cậu gặp vấn đề gì nhỉ?

3 Likes

kết quả nó ra là dãy: 2446699, nó chỉ thay thế chứ nó ko hoán vị, nên mình thắc mắc sai chỗ nào

Cái này là gì???
Idea của bạn là gì???

2 Likes
$tmp=$a[$i];
$a[$j]=$a[$i];
$tmp=$a[$j]; // gán nhầm rồi

Cậu gán lộn rồi :smile: Đổi chỗ 2 bên cho nhau là được.

2 Likes

chỗ này mình hoán vị

okay, mình xin cảm ơn, có cách nào viết gọn hơn ko nhỉ

Với PHP thì không cậu ạ. Và nó cũng ngắn gọn rồi mà :smile:

2 Likes

mình đổi chỗ nó vẫn ko đc

oh, cậu nên cho bọn tớ biết cậu chạy ra gì chứ? :smile:
Cậu có thể check lại điều kiện for của cậu, tớ không nghĩ nó đúng đâu.
Tham khảo article này nhé!

2 Likes

nó vẫn chạy như này: 2446699, ko có gì thay đổi gì cả

Oh, cảm ơn cậu đã ghi thêm thông tin. Cậu tham khảo article mà tớ đưa nhé!

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?