자바 구현 서브 배열 과 최대 값 알고리즘 예제

본 논문 의 사례 는 자바 가 서브 배열 과 최대 값 알고리즘 을 실현 하 는 것 을 서술 하 였 다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
일반적으로 C 와 C++는 알고리즘 실현 에 많이 사용 되 는데 다음은 자바 언어 를 통 해 알고리즘 을 실현 하여 더욱 친근감 을 느 낄 수 있 습 니 다.
제목:
성형 배열 을 입력 하 십시오.배열 에는 양수 도 있 고 마이너스 도 있 습 니 다.
배열 에서 연속 되 는 하나 또는 여러 개의 정수 가 하나의 키 배열 을 구성 하고 모든 하위 배열 은 하나의 합 이 있다.
모든 하위 배열 의 합 의 최대 치 를 구하 십시오.
예 를 들 어 입력 한 배열 은 1,-2,3,10,-4,7,2,-5 와 가장 큰 하위 배열 은 3,10,-4,7,2 이다.
따라서 이 하위 배열 과 18 로 출력 합 니 다.
구현 코드:

package arrDemo;
public class MaxSub {
    public static void main(String[] args) {
        // TODO          
        findMaxSubArySum1();
    }
    public static void findMaxSubArySum1() {
        // sum      
        int sum = 0;
        // max        
        int max = 0;
        //           
        int startPos = 0;
        //           
        int endPos = 0;
        int[] array = { -1, 2, -3, 12, -5, -1, 9, -2 };
        for (int i = 0; i < array.length; i++) {
            sum += array[i];//   
            if (sum < 0) {//              ,     ,              
                sum = 0;
                startPos = i + 1;
            }
            if (sum > max) {//                 ,  sum   max,         
                max = sum;
                endPos = i + 1;
            }
        }
        System.out.println("      :");
        System.out.println("Max:" + max);
        System.out.println("startPos:" + startPos + ",endPos:" + (endPos - 1));
    }
}
실행 결과:

자바 알고리즘 과 관련 된 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.
본 고 에서 말 한 것 이 여러분 의 자바 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기