Xin chào các bạn tiếp tục với bài viết trước Giải thuật sắp xếp số tăng dần-tìm số lớn nhất-xóa phần tử trùng nhau trong PHP
Mình sẽ tích hợp thêm cách để tìm kiếm mảng trong php, ở đây mình sử dụng 2 cách để tìm kiếm:
Cách 1: mình xem số lượng phẩn tử có trong mảng là bao nhiêu mình sẽ chia cho một con số nào đó và mình lấy phần nguyên, Khi có một người cần tìm 1 con số nào đó mình chi việc kiểm tra con số này nó nằm trong phân đoạn nào, thì mình chỉ việc xét ở phân đoạn đó thôi, các này bạn làm tìm kiếm nhanh.
Cách 2: mình sẽ tìm kiếm từ đầu đến cuối mảng để dò tìm số cần tìm, cách này lâu hơn cách 1 nếu số lượng mảng cần lớn càng phức tập thì mình có thể dùng cách 1 nhé.
Code cách 1:
$key =851; $solon_nhat = $max; $sochia_mang = 100; $so_mang = ceil(count($data_array)/$sochia_mang); if($data_array[0]<$key && $key<$data_array[$so_mang]){ $data=1; $begin = 0; echo "bat dau:".$begin."/".$data; } else if($data_array[$so_mang+1]<$key && $key<$data_array[$so_mang*2]){ $data=2; $begin = $so_mang; echo "bat dau:".$begin."/".$data; } else if($data_array[$so_mang*2+1]<$key && $key<$data_array[$so_mang*3]){ $data=3; $begin = $so_mang*2; echo "bat dau:".$begin."/".$data; } else if($data_array[$so_mang*3+1]<$key && $key<$data_array[$so_mang*4]){ $data=4; $begin = $so_mang*3; echo "bat dau:".$begin."/".$data; } else if($data_array[$so_mang*4+1]<$key && $key<$data_array[$so_mang*5]){ $data=5; $begin = $so_mang*4; echo "bat dau:".$begin."/".$data; } else{ $data=6; $begin = $so_mang*5; echo "bat dau:".$begin."/".$data; } function timkiem($begin,$data,$so_mang,$solon_nhat,$key,$sochia_mang,$data_array){ if($data==6){ $data = $sochia_mang; } for($i = $begin; $i<$so_mang*$data; $i++){ if($key==$data_array[$i]){ echo "tim thấy:".$data_array[$i]; } } } timkiem($begin,$data,$so_mang,$solon_nhat,$key,$sochia_mang,$data_array);
Code cách 2:
//cách 2 for($i = 0; $i<1000; $i++){ if($key==$data_array[$i]){ echo "tim thấy:".$data_array[$i]; } }