Markaren Skrevet 20. juli 2011 Del Skrevet 20. juli 2011 (endret) Sitter her å ikke skjønner bæret av en liten merkverdighet i sorteringsalgoritmen min.. Koden funker fint så lenge ingen av tallene er like, men om man har to av samme tall, så skjer det noe rart.. Tipper det har noe å gjøre med objektreferansene som den ikke helt liker, men det er bare et raskt prøveprosjekt, så det ble gjort sånn.. Kommer ikke til å få sove om noen ikke kan forklare det.. import java.util.LinkedList; import java.util.Collections; /** * Write a description of class SelectionSort here. * * @author (your name) * @version (a version number or a date) */ public class SelectionSort { LinkedList<Integer> list; public SelectionSort() { list = new LinkedList<Integer>(); Integer[] i = {4,1,0,2,8,9,5,6,7,3,-1}; //funker, men f.eks {4,1,0,2,8,9,5,6,7,3,-1, 0,0} gjør ikke for (int x = 0; x < i.length; x++) { list.addLast(i[x]); } run(); } public void sort() { for (int i = 0; i < list.size()-1; i++) { Collections.swap(list, i, getLowestValue(i)); } } private Integer getLowestValue(Integer index) { Integer minValue = list.get(index); for (int i = index; i < list.size(); i++) { Integer newValue = list.get(i); if (minValue.intValue() > newValue.intValue()) { minValue = newValue; } } return list.indexOf(minValue); } public void print() { System.out.println(list.toString()); } public void run() { print(); sort(); print(); } } Endret 20. juli 2011 av Markaren Lenke til kommentar
GeirGrusom Skrevet 26. juli 2011 Del Skrevet 26. juli 2011 Det er fordi du bruker indexof. Så hvis det er to tall som er like, så vil den alltid returnere det første tallet (som allerede er sortert og skal ignoreres) 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å