最後に私は問題の解決策を得ました。お気軽にコメントしてください。
例をみましょう:私は、グラフの中でこれを置く場合
int a[] = {1,3,4,6,10,6,16,12,13,15,16,19,20,22,25}
は今(X座標 - >配列のインデックスとY座標 - >配列の値)、グラフは、などのようになります。以下:我々はグラフを見れば
は今、ディップは、我々は最小値が6で最大valが16で見れば1がジグザグ部分に今16の後に10と別の後で起こる2つの場所があります。したがって、配列全体をソートするためにソートする必要がある部分は(6,16)の間です。下の画像を参照してください:
今、私たちは簡単に3部までの配列を分割することができます。そして、配列全体がソートされるようにソートしたい部分の中間部分。貴重な情報を提供してください。私は自分のレーベルに最高のことを説明しようとしたが、もっと説明したいのなら教えてください。貴重な入力を待っています。
以下のコードは、上記のロジックを実装します。
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);
}
お気軽にご質問ください。しかし、それらを分離して保管してください。私はあなたの答えをこの質問に追加して、あなたの質問だけに質問を編集することを提案します。 – Zyerah
私はあなたのポイントを理解できませんでした。ごめんなさい。 – Trying
質問は質問のみである必要があります。あなたの質問のみが含まれるように質問を編集してください。そして、あなたの質問には、通常、あなたの答えのボックスを使って答えることができます。 – Zyerah