Gå til innhold

Finne negativ verdi i array


Anbefalte innlegg

Videoannonse
Annonse

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

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

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
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
  • 1 måned senere...

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...