Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 排列顺序/顺序分析_Java_Arrays_Sequence_Analysis - Fatal编程技术网

Java 排列顺序/顺序分析

Java 排列顺序/顺序分析,java,arrays,sequence,analysis,Java,Arrays,Sequence,Analysis,给S一个n个整数的序列S=s1,s2,…,sn。请计算一下 可以将S分成两部分:s1、s2、…、si和si+1、si+2、…、sn (1一个很好的方法是通过二进制搜索: 您将有三个变量:下限、中间、上限和 从数组的中间开始,lowbounf=0,上限=n-1 接下来,您将使用数组的线性传递检查s1、s2、…smiddle是否严格递减,smiddle、…sn是否严格递增。如果是,则中间是您的解决方案 如果s1,s2,…smiddle不是严格递减的,而smiddle,…,sn不是严格递增的,那么就没

给S一个n个整数的序列S=s1,s2,…,sn。请计算一下 可以将S分成两部分:s1、s2、…、si和si+1、si+2、…、sn
(1一个很好的方法是通过二进制搜索:

您将有三个变量:下限、中间、上限和 从数组的中间开始,lowbounf=0,上限=n-1

接下来,您将使用数组的线性传递检查s1、s2、…smiddle是否严格递减,smiddle、…sn是否严格递增。如果是,则中间是您的解决方案

如果s1,s2,…smiddle不是严格递减的,而smiddle,…,sn不是严格递增的,那么就没有解了

如果s1,s2,…smiddle不是严格递减的,而smiddle,…,sn是严格递增的,则上界=中间,中间=(上界+下界)/2,然后重试

如果s1,s2,…smiddle严格递减,smiddle,…,sn严格递增,则下限=中间,中间=(上限+下限)/2,然后重试

直到找到解决方案,或发现没有解决方案,或直到lowbound=upperbound

例如:

顺序:78512345678 中间=5(元素3),下限=0,上限=10,7,8,5,4,1,2,3并不严格递减,而4,5,6,7,8严格递增

所以:上界=5,中间=2(元素数组[middle]=2),7,8,5是严格递减的,1,2,3,4,5,6,7,8是严格递增的,所以解是中间=2。(注意,中间=2表示数组的第三个元素,第一个是数组[0],第二个是数组[1],第三个是数组[2]=array[middle]=5)

上面的解决方案尝试对数n次(由于二进制搜索),以线性检查数组(每个线性检查都是O(n))。因此,此解决方案是O(n对数n)。

import java.util.*;
公共班机{
公共静态void main(字符串[]args)
{
扫描仪sc=新的扫描仪(System.in);
int n=sc.nextInt();int f=0;
int arr[]=新的int[n];

对于(inti=0;ithanks,对于这个创造性的答案,我从未想过使用二进制搜索
import java.util.Scanner;

public class Sequence {
    public static int c;
    public static void main(String[] args) {
        int n;
        int count = 0;
        Scanner s = new Scanner(System.in);
        n = s.nextInt();
        int a[] = new int [n];
        for(int i = 0; i<n; i++)            // loop for taking input
        {
            a[i] = s.nextInt();
        }
        for(int i = 0; i<n-2; i++)          // loop for finding the minimum point
        {
            if(a[i]<a[i+2])
            {   c = i;                      // associated minimum valued index to c
                for( ; i<n-2; i++)          /* loop for checking whether after that the array 
                {                           is decreasing or not*/  
                    if(a[i+1]<a[i+2])           
                    {
                        count = count+1;
                    }   
                    else
                    {

                    }
                }

            }
        if(count == n-2-c)
        {
            System.out.println("YES");
        }
        else
        {
            System.out.println("NO");
        }
        }

    }
import java.util.*;
public class Main {

    public static void main(String[] args) 
    {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();int f=0;
      int arr[]=new int[n];
        for(int i=0;i<n;i++)
        {
          arr[i]=sc.nextInt();
        }
      int i=0;
      for(i=0;i<n-1;i++)
      {
        if(arr[i]<arr[i+1])
        {
           break;
        }

      }
      for(int j=i+1;j<n-1;j++)
       if(arr[j]>arr[j+1])
           f=1;
      if(f==1)
      System.out.println("false");
           else
           System.out.println("true");
    }
}