Viết mã A & NBSP; PHP để tìm số lớn thứ hai trong mảng. Đưa ra một mảng chưa được phân loại, chúng tôi phải viết chương trình A & nbsp; php & nbsp; để tìm số lớn thứ hai trong một mảng.PHP code to find second largest number in array. Given an unsorted array, we have to write a PHP program to find the second largest number in an array.
Ngoài việc giải quyết vấn đề này. Chúng ta phải tập trung vào sự phức tạp về thời gian. Vì độ phức tạp về thời gian của một thuật toán là rất quan trọng về mức độ hiệu quả của thuật toán của bạn.
Ví dụ: hãy để Lừa lấy một mảng.
Đầu vào - ARR [] = {4, 9, 5, 2, 8, 0, 3, 22}
Đầu ra - 9
Yếu tố lớn thứ hai trong mảng này là 9.
Chúng tôi đã thảo luận về tuyên bố vấn đề. Hãy để suy nghĩ, làm thế nào chúng ta có thể giải quyết vấn đề này một cách hiệu quả? Có nhiều cách để giải quyết vấn đề này. Bạn thích cách tiếp cận nào và tại sao?
Cách tìm số lớn thứ hai trong mảng - mã PHP
Tiếp cận 1:
Một cách tiếp cận là sắp xếp một mảng. PHP cung cấp một số chức năng & nbsp; để sắp xếp một mảng. Sau khi phân loại, chọn phần tử có mặt ở vị trí N-2 trong đó N là kích thước của một mảng.
Độ phức tạp của thời gian của phương pháp này là O [nlogn].
functionsecondHighest[array$arr]{secondHighest[array$arr]{ sort[$arr];sort[$arr]; echo$arr[sizeof[$arr]-2];echo $arr[sizeof[$arr]-2]; } secondHighest[array[4,9,5,2,8,0,3,22]];[array[4,9,5,2,8, 0,3,22]]; |
Lưu ý: Nếu yếu tố của một mảng được lặp lại thì phương pháp này đã giành được công việc.
Để hiểu khái niệm này, hãy để lấy một ví dụ.
int num [] = {1, 9, 5, 55, 8, -1, 3, 55};
Vì vậy, số nào sẽ là số cao thứ hai nếu chúng ta sử dụng phương thức ở trên [sắp xếp và chọn phần tử có ở chỉ mục N-2]. Phần tử là 55 là sai.
Tiếp cận 2:
Traverse một mảng và duy trì hai chỉ mục tối đa và tối đa thứ hai. Mã cho phương pháp này được viết dưới đây.
Mã PHP để tìm số lớn thứ hai trong & nbsp; một mảng
Ý tưởng ở đây là tìm số lớn thứ hai bằng cách sử dụng một vòng đơn. Để làm điều đó, khai báo hai biến tối đa và SecondMax. Ban đầu, gán chúng với giá trị tối thiểu có thể số nguyên [tính bằng PHP, chúng ta có thể làm điều đó bằng cách sử dụng PHP_INT_MIN].PHP_INT_MIN].
Trong mỗi lần lặp, so sánh giá trị có ở chỉ mục hiện tại với biến Max và SecondMax. Nếu giá trị hiện tại lớn hơn mức tối đa thì gán giá trị tối đa trong SecondMax và giá trị hiện tại trong biến tối đa.
Độ phức tạp của thời gian của phương pháp này là O [N].
Cách sắp xếp chuỗi trong PHP.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | /** * * @param mảng $ mảng * @return số cao thứ hai của một mảng */ functionfindSecondMax[array$arr]{findSecondMax[array$arr]{ & nbsp; & nbsp; & nbsp; & nbsp; // nếu mảng trống thì hãy trả về//If array is empty then return if[empty[$arr]]{if[empty[$arr]] { return;return; }} /*/* & nbsp; & nbsp; & nbsp; & nbsp; * Khởi tạo tối đa và tối đa thứ hai với giá trị âm & nbsp; & nbsp; & nbsp; & nbsp; */ $max=PHP_INT_MIN;$max= PHP_INT_MIN; $secondMax=PHP_INT_MIN;$secondMax=PHP_INT_MIN; & nbsp; & nbsp; & nbsp; & nbsp; // Traverse một mảng//Traverse an array & nbsp; & nbsp; & nbsp; & nbsp; foreach [$ mảng là $ number] {foreach[$arr as$number]{ & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; ////If it's greater than the value of max if[$number>$max]{if[$number>$max]{ $secondMax=$max;$secondMax=$max; $max=$number;$max=$number; }} & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;//If array number is greater than secondMax and less than max if[$number>$secondMax&&$numberif[$number
>$secondMax&&$number $ max2] {$ max2 = $ mảng [$ i]; }} echo "giá trị tối đa =".$array = array[5,7,81,0,12]; $max1 =0 ; $max2 = 0; for[$i=0; $i $max1] { $max2 = $max1; $max1 = $array[$i]; } else if[$array[$i] > $max2] { $max2 = $array[$i]; } } echo "Maximum value = ".
Chủ Đề |