Del 18. Utväljande sortering

Så varför en till sortering? För att fortsätta jobba med klasser! men den här fungerar anorlunda än den föra.
Bubbelsortering jemför bara ett tal med nästa tal i serien. säg att vi har en väldigt lång serie med tal och bara första och sista behöver byta plats. Sorteringen blir jätte lång, sen ska dras igenom lika många gånger som antalet tal.
Utväljande jemför ett tal med alla tal, sen byter plats. Plus att när den har gåt igenom första talet, so jemför den andra talet med alla efter den. så det krävs en mycket mindre mängd sorteringar. Detta kanske inte gör så stor skillnad för oss, men för att hantera en större databas, kan en bubbelsorting vara krävande.
Första klassen
public class Main {
public static void main(String[] args)
{
double[] vikt = new double[20];
System.out.println("Mata in, avsluta med 0:");
int temp = Keyboard.readInt();
int antal = 0;
while (temp != 0)
{
vikt[antal] = temp;
antal++;
System.out.print("Mata in ett nytt tal");
temp = Keyboard.readInt();
}
Sort.utvSort(vikt, antal);
for(int i = 0; i < antal; i++)
{
System.out.println(vikt[i]);
}
}
}
För att skriva in talen använder vi en while loop. != betyder skillt ifrån. Så länge temp inte är 0, kommer vi fortsätta skriva in nya tal. Sen i Sort.utvSort(vikt, antal); skriver vi in att vi ska skicka med 2 variabler.
Andra klassen
public class Sort
{
public static void utvSort(double data[], int antal)
{
for (int m = 0; m < antal; m++)
{
int position = m;
for(int n = m+1; n < antal; n++)
{
if(data[n] < data[position])
{
position = n;
}
}
if (m != position)
{
double temp = data[m];
data[m] = data[position];
data[position] = temp;
}
}
}
}
public static void utvSort(double data[], int antal). här tar vi emot våra värden vi skicka från mai.
Den ända som skiljer den här sorteringen med den gamla, är att gjort så den jemför som jag beskrev åvan för.
Det viktiga är att försöka förtså koden
ublic class Main {
public static void main(String[] args)
{
double[] vikt = new double[20];
System.out.println("Mata in, avsluta med 0:");
int temp = Keyboard.readInt();
int antal = 0;
while (temp != 0)
{
vikt[antal] = temp;
antal++;
System.out.print("Mata in ett nytt tal");
temp = Keyboard.readInt();
}
Sort.utvSort(vikt, antal);
for(int i = 0; i < antal; i++)
{
System.out.println(vikt[i]);
}
}
}

Kommentarer

Kommentera inlägget här:

Namn:
Kom ihåg mig?

E-postadress: (publiceras ej)

URL/Bloggadress:

Kommentar:

Trackback
RSS 2.0