Quesential Skrevet 21. september 2006 Skrevet 21. september 2006 Skal lage et program med følgende utskrift...: Eks.: Oppgi storrelsen paa sekvensen : x Tast inn et positivt heltall 1: x Sortert sekvens vil da være: x Tast inn et positivt heltall 2: x Sortert sekvens vil da være: x x *// osv... Får en masse problemer med dette, blir feil uansett liksom... Anyone? Takk
Quesential Skrevet 21. september 2006 Forfatter Skrevet 21. september 2006 Dette er kildekoden jeg har prøvd å bruke...: package innl_1a; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner tastatur = new Scanner (System.in); System.out.print("Oppgi storrelsen paa sekvensen: "); int antall = tastatur.nextInt(); int[] tabell = new int[antall]; System.out.println(antall); System.out.println(""); for (int i = 0; i < antall; i++) { System.out.println("Tast inn et positivt heltall " + (i+1) + ": "); int tall = tastatur.nextInt(); int posisjon = i; for(int in = 0; in < i; in++) { if(tabell[in] > tall) { for(int inn = antall-1; inn > in; inn--) { tabell[inn] = tabell[inn-1]; posisjon = in; break; } } tabell[posisjon] = tall; System.out.print("Sortert sekvens vil da være: "); for(int innn = 0; innn <= i; innn++) { System.out.printf("%d ", tabell[innn]); } System.out.print("\n"); } } } }
Qwark Skrevet 21. september 2006 Skrevet 21. september 2006 Her har jeg først lest alle tallene inn i tabellen og så sortert tabellen med en Quicksort algoritme, la også scanneren inn i en egen metode for oversikten sin del. import java.util.Scanner; public class SortTabell { public static int lesInn(){ Scanner tastatur = new Scanner (System.in); return tastatur.nextInt(); } //Quicksort Algoritme public static int[] sortTab(int[] tab, int v, int h){ int mid,tmp,i,j; i = v; j = h; mid = tab[(v + h)/2]; do { while(tab[i] < mid) i++; while(mid < tab[j]) j--; if (i <= j) { tmp = tab[i]; tab[i] = tab[j]; tab[j] = tmp; i++; j--; } } while (i <= j); if (v < j) sortTab(tab,v,j); if (i < h) sortTab(tab,i,h); return tab; } public static int [] sortTab(int[] tab){ int[] tmpTab = sortTab(tab,0,tab.length-1); return tmpTab; } // main her public static void main(String[] args) { System.out.println("Oppgi storrelsen paa sekvensen: "); int antall = lesInn(); int[] tabell = new int[antall]; System.out.println(antall + "\n"); for (int i = 0; i < tabell.length; i++) { System.out.println("Tast inn et positivt heltall " + (i+1) + ": "); tabell[i] = lesInn(); } int[] sortTabell = sortTab(tabell); System.out.print("Sortert sekvens vil da være: "); for(int innn = 0; innn <= sortTabell.length-1; innn++) { System.out.print(sortTabell[innn] + " "); } System.out.print("\n"); } }
rusolvan Skrevet 22. september 2006 Skrevet 22. september 2006 (endret) Hvis du begynner med en tom int-array som tror jeg dette enklest gjøres ved innsettings-prinsippet, siden tallene alltid er sortert. elelr er dette en algortime oppgave der kjøretiden er det som skal testes? Du kan jo bruke en ArrayList med integer-objekter også hvis det er "lov" ? det forenkler endel. Endret 22. september 2006 av rusolvan
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å