Cuối cùng tôi đã có giải pháp cho vấn đề, vui lòng bình luận.
Hãy lấy một ví dụ:
int a[] = {1,3,4,6,10,6,16,12,13,15,16,19,20,22,25}
Bây giờ nếu tôi sẽ đặt này vào đồ thị (X-phối hợp -> chỉ số mảng và Tọa độ Y -> giá trị của mảng) thì biểu đồ sẽ trông giống như như bên dưới:
Bây giờ, nếu chúng ta thấy biểu đồ có hai vị trí xảy ra sau 10 và khác sau 16. Bây giờ trong phần zag zag nếu chúng ta thấy giá trị nhỏ nhất là 6 và giá trị tối đa là 16. Vì vậy, phần mà chúng ta nên sắp xếp để làm cho toàn bộ mảng được sắp xếp là giữa (6,16). Vui lòng tham khảo hình dưới đây:
Bây giờ chúng ta có thể dễ dàng chia mảng trong ba phần. Và phần giữa chúng ta muốn sắp xếp sao cho toàn bộ mảng sẽ được sắp xếp. Vui lòng cung cấp đầu vào có giá trị của bạn. Tôi đã cố giải thích cho nhãn hiệu của mình tốt nhất, vui lòng cho tôi biết nếu tôi muốn giải thích thêm. Đang đợi đầu vào có giá trị.
Mã dưới đây thực hiện logic trên:
public void getMN(int[] a)
{
int min = Integer.MAX_VALUE; int max = Integer.MIN_VALUE;
for(int i=1; i<a.length; i++)
{
if(a[i]<a[i-1])
{
if(a[i-1] > max)
{
max = a[i-1];
}
if(a[i] < min)
{
min = a[i];
}
}
}
if(max == Integer.MIN_VALUE){System.out.println("Array already sorted!!!");}
int m =-1, n =-1;
for(int i=0; i<a.length; i++)
{
if(a[i]<=min)
{
m++;
}
else
{
m++;
break;
}
}
for(int i=a.length-1; i>=0; i--)
{
if(a[i]>=max)
{
n++;
}
else
{
n++;
break;
}
}
System.out.println(m +" : "+(a.length-1-n));
System.out.println(min +" : "+max);
}
Hãy trả lời câu hỏi của riêng bạn! Nhưng hãy giữ chúng cách nhau. Tôi sẽ đề nghị thêm một câu trả lời với câu trả lời của bạn cho câu hỏi này, và sau đó chỉnh sửa câu hỏi để chỉ là câu hỏi của bạn. – Zyerah
tôi không thể hiểu được quan điểm của bạn. Lấy làm tiếc. – Trying
Câu hỏi phải là câu hỏi _only_. Vui lòng chỉnh sửa câu hỏi của bạn để nó chỉ chứa câu hỏi của bạn. Sau đó, bạn có thể trả lời câu hỏi của riêng mình thông thường bằng cách sử dụng hộp 'Câu trả lời của bạn'. – Zyerah