Teile und Herrsche, längstes absteigendes Teilarray bestimmen

yeha

Mitglied
hey :)
ich versuch mich grade an Teile und Herrsche und bekomme die Aufgabe ums verrecken nicht hin. Vielleicht kann mir hier ja jemand einen Ansatz geben, wie ich die Aufgabe am besten lösen kann.
Meiner war, zu überprüfen ob das längste Teilarray in der linken bzw. rechten Hälfte oder in der "Mitte" vorkommt. Jedoch funktioniert bisher kein Fall bei mir...
hier mein Code: //ja ich weiß, er ist schlecht :D

Code:
    public static int longestSubArray(int[]array,int left,int right)
    {
        int q=(right+left)/2;
        if(array.length==0)
        {
            return 0;
        }
        if(array.length==1)
        {
            return 1;
        }
        if(left==right)
        {
            return 0;
        }
        if(left==q)
        {
            return 0;
        }
        if(right==q)
        {
            return 0;
        }
        if(array[left]>=longestSubArray(array,left+1,q))
        {
            return longestSubArray(array,left+1,q)+1;
        }
        else
        {
            return longestSubArray(array,q+1,right)+1;
        }
       
}

Ob er in der Mitte vorkommt, habe ich bisher noch gar nicht implementiert, wie man sehen kann.
 

yeha

Mitglied
ich möchte das längste, absteigende Teilarray bestimmen: in dem Array : -1, 0, 3, 2 , 1 , 5
wäre die Länge 3 wegen 3>2>1
 

Flown

Administrator
Mitarbeiter
das längste absteigende Teilarray, das in einem Stück drinnen liegt oder kann das auch verteilt sein?
 

yeha

Mitglied
ich hab den Code mal etwas erweitert. Die methode longHelp funktioniert aber anscheinend nicht korrekt.

Code:
public static int longestSubArray(int[]array,int left,int right)
    {
        int q=(right+left)/2;
        if(array.length==0)
        {
            return 0;
        }
        if(array.length==1)
        {
            return 1;
        }
        if(left==right)
        {
            return 0;
        }
        if(left==q)
        {
            return 0;
        }
        if(right==q)
        {
            return 0;
        }
        if(longHelp(array,q+1,right)>longHelp(array,left,q))
        {
            return longHelp(array,q+1,right);
        }
        else if(array[q]>array[q+1])
        {
            return longHelp(array,q+1,right)+longHelp(array,left,q);
        }
        else
        {
            return longHelp(array,left,q);
        }
       
       
}
   
    public static int longHelp(int[] array,int left,int right)
    {
        if(array.length==0)
        {
            return 0;
        }
        if(array.length==1)
        {
            return 1;
        }
        if(left==right)
        {
            return 0;
        }
       
        else
        {
            if(array[left]>=longHelp(array,left+1,right))
            {
                return longHelp(array,left+1,right)+1;       
            }
            else
            {
                return 0;
            }
           
            }
       
    }
 

Flown

Administrator
Mitarbeiter
Ich weiß nicht wieso das ein Divide&Conquer Algorithmus ist, wenn man was sequentiell verarbeiten muss. Wie sieht denn dein Plan dazu aus? In PseudoCode oder auch als Skizze?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Teile und Herrsche Java Basics - Anfänger-Themen 29
CptK Variablen Teile eines Arrays zufällig sortieren Java Basics - Anfänger-Themen 7
B String auseinander nehmen in verschiedene Teile Java Basics - Anfänger-Themen 9
J Teile der Funktionalität von Klassen in Methoden platzieren. Java Basics - Anfänger-Themen 3
B Gewisse Teile aus String ausschneiden Java Basics - Anfänger-Themen 5
O String Teile auslesen Java Basics - Anfänger-Themen 4
B Teile eines Strings in Zahl umwandel und damit weiterrechnen? Java Basics - Anfänger-Themen 3
J Strings nach Teile sortieren Java Basics - Anfänger-Themen 4
G Methoden Nicht überlappte teile eines Rechteck's Java Basics - Anfänger-Themen 9
M Teile einer Website auslesen? Java Basics - Anfänger-Themen 2
R String zerstückeln und Teile in int wandeln Java Basics - Anfänger-Themen 5
D Teile eines Time-Strings nutzen Java Basics - Anfänger-Themen 8
R Teile aus einem mehrdimensionalen Array vergleichen Java Basics - Anfänger-Themen 3
J Datei einlesen teile aus lines ändern und wieder rausschreiben. Java Basics - Anfänger-Themen 4
K String teile auslesen Java Basics - Anfänger-Themen 5
T Set in 2 gleichgroße Teile zerlegen Java Basics - Anfänger-Themen 14
B Teile einer Image in neue Image kopieren Java Basics - Anfänger-Themen 4
P Teile aus Datei lesen und zus mit Strings in Datei speichern Java Basics - Anfänger-Themen 4
G welche Teile der api sind wichtig? Java Basics - Anfänger-Themen 3
M Filesplitting - Teile einer Datei auslesen Java Basics - Anfänger-Themen 7
V Teile eines Strings intelligent ersetzen, kompliziert! Java Basics - Anfänger-Themen 4
D Teile aus String in Array packen Java Basics - Anfänger-Themen 4
V Aus mehreren Zeilen bestimmte Teile auslesen Java Basics - Anfänger-Themen 8
M Teile eines Textes herrausfiltern Java Basics - Anfänger-Themen 7
L Längstes Element einer ArrayList ausgeben Java Basics - Anfänger-Themen 9
R längstes tuple Java Basics - Anfänger-Themen 8
H Erste Schritte Längstes Wort eines Strings herausfinden Java Basics - Anfänger-Themen 7
C OOP Schiffangaben (kürzestes/längstes) Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben