Hallo Java-Forum-Gemeinde,
Ich bin neu hier wie man unschwer erkennen kann und habe schon ein kleines Problem, hoffe ich.
Es handelt sich dabei um ein Programm für mein Studium bei dem ich einen kleinen Denkanstoß brauche.
Die Aufgabe lautet wie folgt:
Eine Alternative zum Sortieren wäre es, das Feld durchzulaufen und sich die kleinste Zahl zu merken und diese direkt nach dem Durchlaufen auszugeben.
Im nächsten Durchlauf müsste man sich in kleinste Zahl, die größer ist als die aus dem vorangegangenen Durchlauf merken.
Welche Abbruch Bedingungen brauchen Sie für diesen Algorithmus?
Welche Auswirkungen hat dieses Verfahren?
Was passiert mit doppelten Einträgen?
Erstellen sie ein entsprechendes JAVA-Programm, nutzen Sie dazu die gegebenen Methoden (z.B. zur Erstellung des Arrays).
Die Fragen habe ich soweit beantwortet, das Programm haben wir großteils vorgegeben.
Einen Sortieralgorithmus sollen wir wie man lesen kann nicht verwenden.
Der Code sieht bei mir dann wie folgt aus ( den Code in der Methode bubblesort sollten wir selbst erstellen)
[Java=42]import java.util.Random;
import java.io.*;
public class App {
public static int[] createRandomIntegerArray(int capacity, int maxValue) {
Random rnd = new Random();
int[] result = new int[capacity];
for (int i = 0; i < result.length; i++) {
result = rnd.nextInt(maxValue) + 1;
}
return result;
}
public static void printArray(int[] Values) {
for (int i = 0; i < Values.length; i++) {
System.out.print(Values);
System.out.print(" ");
}
}
public static void bubbleSort(int[] Values, int maxValue) {
int b = 0;
for (int k = 0; k < Values.length; k++) {
int c = maxValue;
for (int i = 0; i < Values.length; i++) {
if (c > Values & Values > b) {
c = Values;
}
}
if (b == c) {
break;
}
System.out.print(c + " ");
b = c;
}
}
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(
System.in));
System.out
.println("Geben Sie bitte die gewünschte Größe für das Array ein: ");
String StringA = reader.readLine();
int capacity = Integer.parseInt(StringA);
System.out.println("Geben Sie bitte den Höchstwert ein: ");
String StringB = reader.readLine();
int maxValue = Integer.parseInt(StringB);
int E[] = createRandomIntegerArray(capacity, maxValue);
printArray(E);
bubbleSort(E, maxValue);
}
}
[/Java]
mein Problem liegt hierbei, dass es mir bei z.b. einem 10 Felder großen Array mit einem Maximalwert von 15 immer zum Ende 15 ausgibt auch wenn diese Zahl nicht im Array steht. Allerdings habe ich keine Ahnung wie ich das umgehen soll.
MFG
cl0ne
Ich bin neu hier wie man unschwer erkennen kann und habe schon ein kleines Problem, hoffe ich.
Es handelt sich dabei um ein Programm für mein Studium bei dem ich einen kleinen Denkanstoß brauche.
Die Aufgabe lautet wie folgt:
Eine Alternative zum Sortieren wäre es, das Feld durchzulaufen und sich die kleinste Zahl zu merken und diese direkt nach dem Durchlaufen auszugeben.
Im nächsten Durchlauf müsste man sich in kleinste Zahl, die größer ist als die aus dem vorangegangenen Durchlauf merken.
Welche Abbruch Bedingungen brauchen Sie für diesen Algorithmus?
Welche Auswirkungen hat dieses Verfahren?
Was passiert mit doppelten Einträgen?
Erstellen sie ein entsprechendes JAVA-Programm, nutzen Sie dazu die gegebenen Methoden (z.B. zur Erstellung des Arrays).
Die Fragen habe ich soweit beantwortet, das Programm haben wir großteils vorgegeben.
Einen Sortieralgorithmus sollen wir wie man lesen kann nicht verwenden.
Der Code sieht bei mir dann wie folgt aus ( den Code in der Methode bubblesort sollten wir selbst erstellen)
[Java=42]import java.util.Random;
import java.io.*;
public class App {
public static int[] createRandomIntegerArray(int capacity, int maxValue) {
Random rnd = new Random();
int[] result = new int[capacity];
for (int i = 0; i < result.length; i++) {
result = rnd.nextInt(maxValue) + 1;
}
return result;
}
public static void printArray(int[] Values) {
for (int i = 0; i < Values.length; i++) {
System.out.print(Values);
System.out.print(" ");
}
}
public static void bubbleSort(int[] Values, int maxValue) {
int b = 0;
for (int k = 0; k < Values.length; k++) {
int c = maxValue;
for (int i = 0; i < Values.length; i++) {
if (c > Values & Values > b) {
c = Values;
}
}
if (b == c) {
break;
}
System.out.print(c + " ");
b = c;
}
}
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(
System.in));
System.out
.println("Geben Sie bitte die gewünschte Größe für das Array ein: ");
String StringA = reader.readLine();
int capacity = Integer.parseInt(StringA);
System.out.println("Geben Sie bitte den Höchstwert ein: ");
String StringB = reader.readLine();
int maxValue = Integer.parseInt(StringB);
int E[] = createRandomIntegerArray(capacity, maxValue);
printArray(E);
bubbleSort(E, maxValue);
}
}
[/Java]
mein Problem liegt hierbei, dass es mir bei z.b. einem 10 Felder großen Array mit einem Maximalwert von 15 immer zum Ende 15 ausgibt auch wenn diese Zahl nicht im Array steht. Allerdings habe ich keine Ahnung wie ich das umgehen soll.
MFG
cl0ne