lassejl Skrevet 13. mai 2008 Del Skrevet 13. mai 2008 Hallo, Finnes det noen lur måte å finne ut om et array inneholder en negativ verdi annet enn å kjøre en forløkke og sjekke om hvert nummer har en verdi <0 ? Lenke til kommentar
Mr.Garibaldi Skrevet 14. mai 2008 Del Skrevet 14. mai 2008 Egentlig ikke, med mindre du foretar sjekken når du fyller arrayen. Lenke til kommentar
pgdx Skrevet 14. mai 2008 Del Skrevet 14. mai 2008 Eller har domenekunnskap om arrayet ... Er den sortert? Følger den noen slags mønster? Hvis ikke er det en O(n), i.e. like mange operasjoner som antall elementer i arrayet. Du kan selvsagt bruke Arrays.sort(myArray) og sjekke første elementet, men da har du plutselig en O(n log n). Et siste alternativ er, som Mr. Garibaldi sier, å sjekke på innlesing. Det finnes flere måter å gjøre dette på, en av de måtene er å arve fra ArrayList og ha et flagg som sier om arrayet inneholder negative tall. -hth Lenke til kommentar
lassejl Skrevet 14. mai 2008 Forfatter Del Skrevet 14. mai 2008 Brukte bare en foreach løkke, fant ut at det ikke var så tregt alikevel. Har en rask sorteringsmetode som ikke tar negative tall, og en ikke fullt så rask som tar negative tall skjønner du, så tenkte jeg skulle kjøre en test først for å se hvilken sorteringsmetode jeg skulle ta i bruk, fant ut det ble kjappere (der der ikke er negative) med forløkka så sortering enn bare bruk av den tregeste. Men, nytt spørsmål. Kan man typekonvertere en int[] til Integer[]? Har testa men eclipse viser feil: "Cannot cast from int[] to Integer[]" når jeg bruker denne metoden: int[] a = new int[0]; Integer[] b = (Integer[])a; Lenke til kommentar
Mr.Garibaldi Skrevet 14. mai 2008 Del Skrevet 14. mai 2008 Hvordan er den raske algoritmen? Det er ikke mulig å starte med den, og fortsette med den trege om du finner et negativt tall? Men, nytt spørsmål. Kan man typekonvertere en int[] til Integer[]? Har testa men eclipse viser feil: "Cannot cast from int[] to Integer[]" når jeg bruker denne metoden: int[] a = new int[0]; Integer[] b = (Integer[])a; Det er ikke mulig, da du trenger å konvertere hvert tall til et Integer objekt, ikke bare selve arrayen. Selv om Integer og int virker som det samme, er de ca. like like som en int og en String. Så du må nok bruke en for-løkke til.... Lenke til kommentar
pgdx Skrevet 14. mai 2008 Del Skrevet 14. mai 2008 Men, nytt spørsmål. Kan man typekonvertere en int[] til Integer[]?Nei, men hvorfor/hva vil du?Autoboxing Lenke til kommentar
gunnard Skrevet 15. mai 2008 Del Skrevet 15. mai 2008 Men, nytt spørsmål. Kan man typekonvertere en int[] til Integer[]?Nei, men hvorfor/hva vil du?Autoboxing Ikke at jeg vet hvordan lassejl's kode er, men som du ser fra den siden du lenket til vil det trolig i de fleste tilfeller være mest effektivt å ikke bruke autoboxing og unboxing: It is plenty fast enough for occasional use, but it would be folly to use it in a performance critical inner loop. Lenke til kommentar
blackbrrd Skrevet 28. juni 2008 Del Skrevet 28. juni 2008 Hvordan har du klart å skrive en sorteringsalgoritme som er kjappere med postive heltall enn negative heltall? Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå