Toto vlákno bylo označeno za vyřešené.
ViliX64 +1
Návštěvník
Zdravím, napsal jsem jednoduchý program pro Bubble Sort pole, někde ovšem nastala chyba a nefunguje to:
package cz.vilix;
public class UntitledMain {
static boolean pokracovat = true;
static int[] pole = {99, -10, 100123, 18, -978, 5623, 463, -9, 287, 49};
public static void main(String[] args) {
do {
for(int i = 1; i < 10; i++) {
if (pole[i] < pole[i - 1]) {
prohod(pole[i], pole[i - 1]);
}
}
zkontroluj();
} while(pokracovat);
vypis();
System.exit(0);
}
static void zkontroluj() {
if ((pole[0] <= pole[1]) && (pole[1] <= pole[2]) && (pole[2] <= pole[3]) && (pole[3] <= pole[4]) && (pole[4] <= pole[5]) && (pole[5] <= pole[6])
&& (pole[6] <= pole[7]) && (pole[7 ]<= pole[8]) && (pole[8] <= pole[9])) {
pokracovat = false;
}
}
static void prohod(int a, int b) {
int pom;
pom = a;
a = b;
b = pom;
}
static void vypis() {
for(int i = 0; i < 10; i++) {
System.out.println(pole[i]);
}
}
}
Domnívám se, že je chyba buď v metodě, která kontroluje, jestli je to seřazené, nebo v metodě, která promněnné prohazuje..
ViliX64 +1
Návštěvník
Přišel jsem na to pár minut potom, co jsem to sem vložil, v metodě prohod(); sice hezky prohazuji promněné, ale nepřiřazuji je do pole..
Každopádně bych se chtěl ještě zeptat, jestli není něco efektivnějšího, než tahle zkouška:
(pole[0] <= pole[1]) && (pole[1] <= pole[2]) && (pole[2] <= pole[3]) && (pole[3] <= pole[4]) && (pole[4] <= pole[5]) && (pole[5] <= pole[6]) && (pole[6] <= pole[7]) && (pole[7 ]<= pole[8]) && (pole[8] <= pole[9])
Pokusil jsem se o cyklus:
static boolean zkontroluj() {
for(int i = 1; i <= 9; i++) {
if(pole[i] < pole[i - 1]) {
return false;
}
}
return true;
}
ten ovšem nefunguje tak, jak by měl.
martin ~ Anonymní uživatel~ 1602 příspěvků
#2 ViliX6
myslel jsi to dobre ale napsal jsi to spatne, zkus toto.
private static boolean checkArray() {
for(int i = 1; i<pole.length; i++){
if(pole[i-1]>pole[i]){
return false;
}
}
return true;
}
ViliX64 +1
Návštěvník
Už jsem to opravil, problém je, že tuto metodu jsem si dosadil do cyklu do - while, takže jsem tam měl akorát prohozené hodnoty, čili tohle je správně:
static boolean zkontroluj() {
for(int i = 1; i <= 9; i++) {
if(pole[i] < pole[i - 1]) {
return true;
}
}
return false;
}
Zjistit počet nových příspěvků
Přidej příspěvek
Uživatelé prohlížející si toto vlákno Uživatelé on-line: 0 registrovaných, 2 hosté