2015-06-13 13 views
5

Ich habe ein Problem in sortierten verknüpften Liste. Ich kann ein Element nicht in konstanter Zeit einfügen. Wenn es möglich ist, wie kann ich es lösen?Wie fügt man ein Objekt in eine sortierte verkettete Liste innerhalb konstanter Zeitkomplexität ein?

Und diese Funktion Zeitkomplexität ist Big-O (N)

template <class ItemType> 
void SortedType<ItemType>::InsertItem(ItemType item) 
{ 
    NodeType<ItemType>* newNode; 
    NodeType<ItemType>* predLoc; 
    NodeType<ItemType>* location; 
    bool moreToSearch; 

    location = listData; 
    predLoc = NULL; 
    moreToSearch = (location != NULL); 
    while (moreToSearch) 
    { 
    if (location->info < item) 
    { 
     predLoc = location; 
     location = location->next; 
     moreToSearch = (location != NULL); 
    } 
    else moreToSearch = false; 
    } 
    newNode = new NodeType<ItemType>; 
    newNode->info = item; 

    if (predLoc == NULL) 
    { 
    newNode->next = listData; 
    listData = newNode; 
    } 
    else 
    { 
    newNode->next = location; 
    predLoc->next = newNode; 
    } 
    length++; 
} 
+2

Sie können nicht wissen. Wenn Sie das tun könnten, hätten Sie die Sortierung revolutioniert. Sie könnten mit einer leeren verketteten Liste beginnen, die per Definition sortiert wäre, das erste noch sortierte Element hinzufügen und dann weitermachen, was bedeuten würde, dass die Sortierelemente O (n), das ist unmöglich. –

Antwort

4

Es ist nicht möglich, einen Artikel in sortierten verknüpften Liste innerhalb konstanter Zeitkomplexität Einsatz. Aber Sie können Element in O (log n) Zeit Komplexität einfügen.

how to apply binary search O(log n) on a sorted linked list?

+1

Wenn Sie Daten in konstanter Zeit einfügen möchten, müssen Sie unsortierte Liste verwenden, andernfalls müssen Sie eine neue Algo erstellen, um Daten in sortierter Liste in konstanter Zeit einzufügen. –

+0

Warum hast du in einer Antwort geantwortet ??? – Yeahia2508

+0

Weil ans angegeben ist, möchte ich nur eine zusätzliche Zeile hinzufügen. –

0

Eigentlich ist es nicht möglich, in sortierten verknüpften Liste, aber Sie können einen Eintrag in unsortierten verkettete Liste mit konstanter Zeit einfügen, die Big-O (1).

und auch dies sieht ...
https://www.youtube.com/watch?v=tta6BIiIIFI

2

Es ist nicht möglich, einen Artikel in sortierten verknüpften Liste mit O (1) Zeit Komplexität Einsatz. Sie können ein Element nur in unsortierte verkettete Liste mit Zeitkomplexität O (1) einfügen. Sie können mehr über Zeit Complixity von diesem Link http://bigocheatsheet.com/

+2

Wenn jemand Downvote geben möchte, bitte Kommentar mich, wo ist meine Schuld. –

Verwandte Themen