Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
--- Praktische Informatik (http://www.informatikerboard.de/board/board.php?boardid=6)
---- Algorithmen (http://www.informatikerboard.de/board/board.php?boardid=17)
----- Welche Laufzeit ist schneller? (Normal einsortieren oder Bucketsort) (http://www.informatikerboard.de/board/thread.php?threadid=4361)


Geschrieben von Indyfan751 am 03.03.2021 um 07:30:

  Welche Laufzeit ist schneller? (Normal einsortieren oder Bucketsort)

Meine Frage:
Hallo,

ich habe 100 Werte, die in 30 Behälter einsortiert werden müssen.

Der Code sieht so aus:

code:
1:
2:
3:
4:
5:
6:
for(int i = 0; i < 30; i++) {
  if(Behälter == i) {
    // Einfügen
  }
}

Also wäre dies als Laufzeit O(30).

Nun habe ich mir gedacht, dass der Code schneller funktionieren kann, wenn ich Bucketsort nutze. Aber ich glaube das funktioniert nicht.

Hat jemand sonst noch Ideen, wie ich den Code beschleunigen kann?

Meine Ideen:
Hab keine...



Geschrieben von as_string am 04.03.2021 um 15:36:

 

Ich verstehe ehrlich gesagt den Code nicht. Dein Behälter ist also auch ein int, oder wie soll sonst der Vergleich funktionieren? Sind die Bezeichner mit Umlauten drin erlaubt???
Dann ist die Laufzeit so ja der Ordnung 100 mal 30, nicht nur 30, weil Du ja 100 Werte einsortieren willst, oder?
Wie sollen die Werte einsortiert werden? Sind das nur 100 Werte, die alle zwischen 0 und 30 liegen? Sind die Werte in einem Array?

Soll das ganze am Ende ein Bucketsort werden oder was genau willst Du erreichen?

Gruß
Marco



Geschrieben von indyfan752 am 06.03.2021 um 15:17:

 

Nein. Das sind 100 Kalenderdaten eines Monats und müssen in 30 Behälter, die die Tage eines Monats symbolisieren, einsortiert werden.

Die 100 Kalenderdaten sind schon nach Datum sortiert.

Trotzdem beträgt die Laufzeit bei 500 Millisekunden. Kann man das nicht schneller machen?



Geschrieben von as_string am 08.03.2021 um 16:34:

 

Ja aber dann musst Du doch auf jeden Fall einmal über die 100 Kalender-Daten laufen, jedes nach seinem Tag-im-Monat fragen und in den entsprechenden "Behälter" einsortieren. Du musst doch nicht über die 30 Behälter laufen, was was das denn?

Gruß
Marco


Forensoftware: Burning Board, entwickelt von WoltLab GmbH