vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Sortieralgorithmus für Visual Basic .NET 2010 Express gesucht 
Autor: Manfred X
Datum: 14.01.11 10:33

Hallo!

Vielleicht irgendwie sowas ????
Ziemlich primitiv und nur vage getestet. !!!!!
Der Einfachheit halber mit generischen Listen.
Ich habe sicherheitshalber einen "Selbsttest" eingebaut.
Ich schiebe die höherindizierten Einträge einfach nach
hinten in die Liste bis alles irgendwie passt.
Verweis auf System.Linq erforderlich
(Mehrfacheinträge zulässig???)

ListToOrder: Liste mit den Einträge
Rules: Liste mit den Anordnungsregeln wie beschrieben
Meldung: Wenn was schief gelaufen ist
Rückgabe: Liste mit Anordnung

    Public Function OrderByRules _
             (ByVal ListToOrder As System.Collections.Generic.List(Of String), _
              ByVal rules As System.Collections.Generic.List(Of String), _
              Optional ByRef Meldung As String = "") _
              As System.Collections.Generic.List(Of String)
 
        Meldung = ""
        If ListToOrder Is Nothing OrElse ListToOrder.Count < 2 Then
            Meldung = "Ungeeignete Liste" : Return Nothing
        End If
        If rules Is Nothing OrElse rules.Count < 1 Then
            Meldung = "Fehlende Regeln" : Return Nothing
        End If
        If ListToOrder.Contains(Nothing) OrElse rules.Contains(Nothing) Then
            Meldung = "Liste oder Regel-Liste enthält Nullverweis" 
            Return Nothing
        End If
 
        Dim l As Integer = _
        Aggregate listentry As String In ListToOrder Distinct Into Count()
        If l <> ListToOrder.Count Then
            Meldung = "Liste enthält Mehrfacheinträge" : Return Nothing
        End If
        l = Aggregate listentry As String In rules Distinct Into Count()
        If l <> rules.Count Then
            Meldung = "Regel-Liste enthält Mehrfacheinträge" : Return Nothing
        End If
 
        'Listeneinträge aufspalten: 
        'regelbelegte Einträge kommen in rList, freie in fList
        Dim entry As String = "", entrybehind As String = ""
        Dim listindex As Integer
        Dim rList As New List(Of String) 'Liste mit regelbelegten Einträgen
        Dim fList As New List(Of String) 'Liste für freie Einträge
        fList.AddRange(ListToOrder) 'erstmal alles in fList
        For i As Integer = 0 To rules.Count - 1
            If Not GetRule(rules(i), entrybehind, entry) Then
                Meldung = "Unbrauchbarer Listeneintrag" : Return Nothing
            End If
            listindex = fList.IndexOf(entry)
            If listindex >= 0 Then rList.Add(entry) : fList.Remove(entry)
            listindex = fList.IndexOf(entrybehind)
            If listindex >= 0 Then rList.Add(entrybehind) : fList.Remove( _
              entrybehind)
        Next i
 
        If rList.Count > 0 Then
            'Regelwerk auf rList anwenden: 
            'so lange, bis alle Regeln eingehalten sind
            Dim entrymoved As Boolean, _
            zähler As Integer = 0, index_behind As Integer
            Do
                entrymoved = False
                For i As Integer = 0 To rules.Count - 1
                    GetRule(rules(i), entrybehind, entry)
                    index_behind = rList.IndexOf(entrybehind)
                    listindex = rList.IndexOf(entry)
                    If listindex >= 0 And index_behind >= 0 Then
                        If listindex > index_behind Then
                            rList.Remove(entrybehind) : rList.Add(entrybehind)
                            entrymoved = True
                        End If
                    End If
                Next i
                zähler += 1
                If zähler >= rList.Count Then
                    Meldung = "Inkonsistentes Regelwerk" 
                    Return Nothing
                End If
            Loop While entrymoved
        End If
 
        fList.Sort()  'Standard-Stringcomparer beim Sortieren
        rList.AddRange(fList) 'freie Liste anhängen
        If Not CheckRules(rList, rules) Then
            Meldung = "Anordnungsfehler !!!!" : Return Nothing
        End If
        Return rList
    End Function
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Sortieralgorithmus für Visual Basic .NET 2010 Express gesuch...2.351Passendes Mitem...13.01.11 19:51
Re: Sortieralgorithmus für Visual Basic .NET 2010 Express ge...1.429bauer14.01.11 08:11
Re: Sortieralgorithmus für Visual Basic .NET 2010 Express ge...1.425Passendes Mitem...14.01.11 10:03
Re: Sortieralgorithmus für Visual Basic .NET 2010 Express ge...1.561Manfred X14.01.11 09:38
Re: Sortieralgorithmus für Visual Basic .NET 2010 Express ge...1.352Passendes Mitem...14.01.11 10:07
Re: Sortieralgorithmus für Visual Basic .NET 2010 Express ge...1.406Manfred X14.01.11 10:33
Re: Sortieralgorithmus für Visual Basic .NET 2010 Express ge...1.412Manfred X14.01.11 10:34
Re: Sortieralgorithmus für Visual Basic .NET 2010 Express ge...1.504Passendes Mitem...14.01.11 10:37
Re: Sortieralgorithmus für Visual Basic .NET 2010 Express ge...1.323Passendes Mitem...14.01.11 11:05
Re: Sortieralgorithmus für Visual Basic .NET 2010 Express ge...1.332Manfred X14.01.11 11:14
Re: Sortieralgorithmus für Visual Basic .NET 2010 Express ge...1.592Passendes Mitem...14.01.11 11:34
Re: Sortieralgorithmus für Visual Basic .NET 2010 Express ge...1.383Manfred X14.01.11 11:40
Re: Sortieralgorithmus für Visual Basic .NET 2010 Express ge...1.618Passendes Mitem...14.01.11 12:01
Re: Sortieralgorithmus für Visual Basic .NET 2010 Express ge...1.608Passendes Mitem...14.01.11 16:38
Re: Sortieralgorithmus für Visual Basic .NET 2010 Express ge...1.371Manfred X14.01.11 17:43
Re: Sortieralgorithmus für Visual Basic .NET 2010 Express ge...1.378Passendes Mitem...15.01.11 15:23
Re: Sortieralgorithmus für Visual Basic .NET 2010 Express ge...1.421Manfred X15.01.11 16:34
Re: Sortieralgorithmus für Visual Basic .NET 2010 Express ge...1.321Passendes Mitem...14.01.11 09:49

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel