この記事では、サブアレイの合計を見つけるための最大値アルゴリズムのJava実装について説明します。次のように、参照のために共有してください。
一般に、CおよびC ++は、アルゴリズムの実装でより頻繁に使用されます。以下に、Java言語を介してアルゴリズムを実装しているため、親密に感じます。
トピック:
アレイに正と負の数がある形状アレイを入力します。
アレイ内の1つ以上の連続した整数はサブアレイを形成し、各サブアレイには合計があります。
すべてのサブアレイの合計の最大値を見つけます。
たとえば、入力配列は1、-2、3、10、-4、7、2、-5であり、最大のサブアレイは3、10、-4、7、2、
したがって、出力はサブアレイの合計18です。
実装コード:
パッケージarrdemo; public class maxsub {public static void main(string [] args){// todo automatic generated method stub findmaxsubarysum1(); } public static void findmaxsubarysum1(){// sumはサブアレイint sum = 0の合計です。 // Maxは、SubArray 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]; // sum if(sum <0){//現在の合計が負であることが判明した場合、クリアし、開始位置は次の位置から始まりますsum = 0; startpos = i + 1; } if(sum> max){//合計が前の最大よりも大きいことが判明した場合、合計を最大に割り当て、最後の位置max = sumを記録します。 endpos = i + 1; }} system.out.println( "wulin.comテスト結果:"); System.out.println( "max:" + max); system.out.println( "startpos:" + startpos + "、endpos:" +(endpos -1)); }}実行結果:
Javaアルゴリズムの詳細については、このサイトに興味のある読者は、「Javaデータ構造とアルゴリズムのチュートリアル」、「Java操作DOMノードのヒントの要約」、「Javaファイルの要約およびディレクトリ操作のヒント」、「Java Cache操作のヒントの要約」というトピックを見ることができます。
この記事がみんなのJavaプログラミングに役立つことを願っています。