AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Kleinsten Wert einer Liste finden

Ein Thema von argonix · begonnen am 12. Dez 2009 · letzter Beitrag vom 12. Dez 2009
Antwort Antwort
Benutzerbild von argonix
argonix

Registriert seit: 28. Feb 2007
257 Beiträge
 
Delphi 2005 Personal
 
#1

Kleinsten Wert einer Liste finden

  Alt 12. Dez 2009, 22:33
Hallo!
Ich habe folgendes Problem: In einer Liste von Listen sind verschiedene Objekte enthalten. Mit list[a].Count kann ich für "a" jeweils ermitteln, wie viele Objekte in der Liste sind.
Nun möchte ich gerne wissen, in welcher Liste am wenigsten Elemente drin sind, und ob in allen Listen gleich viele einheiten drinn sind.
Nun müsste ich ja die ganzen Listen durchgehen und die Count-Werte in eine extra-Liste schreiben, diese dann sortieren, den obersten wert ermitteln, die Liste nochmal durchgehen, schauen, welche Liste diesen Count wert hat - fertig.
Um herauszufinden, ob alle Listen gleich viele Elemente enthalten, muss ich dann jede Zahl der Ergebnisliste mit dem Vorgänger vergleichen. Keine Unterschiede = alles gleich.
So, und jetzt die Frage: Geht das vielleicht einfacher, schneller und effizienter?

EDIT: Titel angepasst.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Kleinsten Wert einer Liste finden

  Alt 12. Dez 2009, 22:41
Ja das geht einfacher:
Pseudo Code:
Code:
if (listen.count > 0) then
begin
  kleinser_wert := listen.items[0].count;
  alle_gleich := True;
  for i := 1 to listen.count - 1 do
  begin
    if (listen.items[i].count < kleinster_wert) then
      kleinster_wert = listen.items[i].count;
      alle_gleich := False;
    end;
  end;
end
else
  Fehler: kein kleinster Wert weil keine liste vorhanden
Also:
Am Anfang ist der kleinste Wert der wert von der 0ten Liste. Danach geht man alle anderen Listen durch und schaut ob in irgend einer Liste weniger drin ist. Sobald man eine solche Liste gefunden hat sind schonmal nicht alle gleich voll und man merkt sich den Wert der Liste wo weniger drin ist.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Kleinsten Wert einer Liste finden

  Alt 12. Dez 2009, 22:51
So hätte ich das auch gemacht (schneller als O(n) kann es auch nicht werden), nur hast du ein Problem wenn das erste Element das Kleinste ist. In dem Fall kommst du nie ins if und hast alle_gleich = True;

und die Fehlermeldung sollte eher "Liste leer" heissen.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Benutzerbild von argonix
argonix

Registriert seit: 28. Feb 2007
257 Beiträge
 
Delphi 2005 Personal
 
#4

Re: Kleinsten Wert einer Liste finden

  Alt 12. Dez 2009, 23:17
Ja, genau... Da habe ich wohl nicht lang genug nachgedacht! Vielen Dank!
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#5

Re: Kleinsten Wert einer Liste finden

  Alt 12. Dez 2009, 23:42
Das ist ein Standardcode, den eigentlich jeder mit etwas Erfahrung sofort runterschreibt. So was sieht man ein Mal und vergisst es nicht wieder. Aber die Frage nach "alle gleich" solltest du noch anpassen:

Delphi-Quellcode:
if (listen.count > 0) then
begin
  kleinser_wert := listen.items[0].count;
  alle_gleich := True;
  for i := 1 to listen.count - 1 do
  begin


    if (listen.items[i].count < kleinster_wert) then
      kleinster_wert = listen.items[i].count;
    end;
    if (listen.items[i].count != kleinster_wert) then
      alle_gleich := False;
    end;

  end;
end
else
  Fehler: keine Werte in keine liste vorhanden[/quote]
[edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit]
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz