Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Variablen nach Größe sortieren

Frage Entwicklung Batch & Shell

Mitglied: bufferm44

bufferm44 (Level 1) - Jetzt verbinden

20.02.2009, aktualisiert 13:23 Uhr, 4172 Aufrufe, 3 Kommentare

Hi zusammen!

Ich habe 6 Variablen, a-f, diese enthalten ganze Zahlen von 0-999. Zwei Variablen können den gleichen Wert haben.

Wie kann ich die Variablan nach Größe sortieren? Mir fällt als Lösungsansatz nur ein, eine nach der anderen mit allen zu vergleichen. aber das ist natürlich megaumständlich...

Gibt es einen eleganteren Lösungsansatz?

Beispiel:

a=1 b=10 c=10 d=300 e=500 f=700

Nun soll eine "Platzierung" (wie bei einem Wettbewerb) errechnet werden:

fplatz=1
eplatz=2
dplatz=3
cplatz=4
bplatz=4 (haben ja beide gleiche Punktzahl)
aplatz=5

Hat jemand einen Tipp?

LG

Tobi
Mitglied: ElForum
20.02.2009 um 13:57 Uhr
01.
funktion quicksort(links, rechts) 
02.
     falls links < rechts dann 
03.
         teiler := teile(links, rechts) 
04.
         quicksort(links, teiler-1) 
05.
         quicksort(teiler+1, rechts) 
06.
     ende 
07.
 ende
Die folgende Implementierung der Funktion teile teilt das Feld so, dass sich das Pivotelement an seiner endgültigen Position befindet und alle kleineren Elemente davor stehen, während alle größeren danach kommen:

01.
  
02.
funktion teile(links, rechts) 
03.
     i := links  
04.
     // Starte mit j links vom Pivotelement 
05.
     j := rechts - 1 
06.
     pivot := daten[rechts] 
07.
 
08.
     wiederhole 
09.
 
10.
         // Suche von links ein Element, welches größer als das Pivotelement ist 
11.
         wiederhole solange daten[i] ≤ pivot und i < rechts 
12.
             i := i + 1   
13.
         ende  
14.
 
15.
         // Suche von rechts ein Element, welches kleiner als das Pivotelement ist 
16.
         wiederhole solange daten[j] ≥ pivot und j > links 
17.
             j := j - 1  
18.
         ende   
19.
 
20.
         falls i < j dann tausche daten[i] mit daten[j] 
21.
 
22.
     solange i < j // solange i an j nicht vorbeigelaufen ist  
23.
 
24.
     // Tausche Pivotelement (daten[rechts]) mit neuer endgültiger Position (daten[i]) 
25.
    
26.
     falls daten[i] > pivot  
27.
             tausche daten[i] mit daten[rechts]  
28.
     ende 
29.
      
30.
     // gib die Position des Pivotelements zurück 
31.
     
32.
     antworte i 
33.
 ende
Bitte warten ..
Mitglied: bastla
20.02.2009 um 15:46 Uhr
Hallo bufferm44!

Woher stammen denn die Werte, und wie soll die Verarbeitung nach der Rangbestimmung fortgesetzt werden?

Die Rangziffern ermitteln (wobei nach zwei 4. Rängen für die Punktzahl 10 eigentlich für 1 Punkt nur noch der 6. Rang bliebe) könntest Du zB so:
01.
@echo off & setlocal enabledelayedexpansion 
02.
 
03.
set /a Punkte1=1 
04.
set /a Punkte2=10 
05.
set /a Punkte3=10 
06.
set /a Punkte4=300 
07.
set /a Punkte5=500 
08.
set /a Punkte6=700 
09.
 
10.
set /a Anzahl=6 
11.
for /L %%i in (1,1,%Anzahl%) do for /L %%j in (1,1,%Anzahl%) do if !Punkte%%i! leq !Punkte%%j! set /a Rang%%i+=1 
12.
echo Punkte	Rang 
13.
for /L %%i in (1,1,%Anzahl%) do echo !Punkte%%i!	!Rang%%i!
Grüße
bastla
Bitte warten ..
Mitglied: bufferm44
27.02.2009 um 18:39 Uhr
Hi bastla!

Großartige Idee mit dem Vergleichen

Funktioniert perfekt!

Woher stammen denn die Werte, und wie soll die Verarbeitung nach der
Rangbestimmung fortgesetzt werden?

Sie werden aus Textdateien ausgelesen (ein externes Programm speichert sie und liest auch die später geschriebene "Ranglistendatei" aus.

Auch dass es bei Gleichplatzierung z.B. keinen 3., sondern nur zwei 4. Plätze gibt ist optimal.

Vielen Dank

@El Forum - Dank Dir auch, leider falsche Sprache ;)
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Grosses Variablen Problem ( Batch)
gelöst Frage von clragonBatch & Shell30 Kommentare

Hey Leute. Ich bin auf ein doofes problem gestossen als ich durch variablen loopen wollte, da ich mir die ...

Batch & Shell
Cmd - Dateien mit der Größe 0 finden und sortieren
gelöst Frage von 0verSickBatch & Shell1 Kommentar

Dateien mit der Größe 0 finden und sortieren Hallo, ich bin neu hier und ein Azubi. Ich habe eine ...

Microsoft Office
Excel Makro zum Sortieren von Spalten an größeres Dokument Anpassen
gelöst Frage von RolforMicrosoft Office2 Kommentare

Hi, Ich habe leider nicht viel Erfahrung mit VB-Makros für Excel und habe zum Sortieren von Spalten in einem ...

Microsoft
Powershell sortieren
Frage von FabianretMicrosoft3 Kommentare

Guten Tag. Ich möchte Zahlen (bsp. 9, 3, 1, 7, 4, 8) die in einer txt Datei gespeichert sind ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 23 StundenWindows 102 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 1 TagSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 1 TagInternet3 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 1 TagDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
Windows Server
GPO nur für bestimmte Computer
Frage von Leo-leWindows Server13 Kommentare

Hallo Forum, gern würde ich ein Robocopy script per Bat an eine GPO hängen. Wichtig wäre aber dort der ...

Windows Server
KMS Facts for Client configuration
Frage von winlinWindows Server13 Kommentare

Hey Leute, wir haben in unserem Netz nun einen neuen KMS Server. Haben Bestands-VMs die noch nicht aktiviert sind. ...

Windows Tools
Software-Tool zum Entfernen von bösartigem Windows
Frage von emeriksWindows Tools11 Kommentare

Hi, siehe Betreff hat das jemals irgendjemand schonmal sinnvoll eingesetzt? (MRT) E.

Router & Routing
OpenWRT bzw. L.E.D.E auf Buffalo WZR-HP-AG300H - update
gelöst Frage von EpigeneseRouter & Routing11 Kommentare

Guten Tag, ich habe auf einem Buffalo WZR-HP-AG300H die alternative Firmware vom L.E.D.E Projekt geflasht. Ich bin es von ...