eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingJak zamienić ścieżki na strukturę drzewiastą? › Re: Jak zamienić ścieżki na strukturę drzewiastą?
  • Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
    atman.pl!.POSTED!not-for-mail
    From: Andyy <n...@s...tego>
    Newsgroups: pl.comp.programming
    Subject: Re: Jak zamienić ścieżki na strukturę drzewiastą?
    Date: Sat, 25 Feb 2017 10:16:50 +0100
    Organization: ATMAN - ATM S.A.
    Lines: 46
    Message-ID: <o8ri21$q78$1@node1.news.atman.pl>
    References: <o8q6ur$fhk$1@node1.news.atman.pl> <o8q73o$fhk$2@node1.news.atman.pl>
    <o8q82k$a99$1@node2.news.atman.pl>
    NNTP-Posting-Host: 91.239.205.105
    Mime-Version: 1.0
    Content-Type: text/plain; charset=utf-8; format=flowed
    Content-Transfer-Encoding: 8bit
    X-Trace: node1.news.atman.pl 1488014209 26856 91.239.205.105 (25 Feb 2017 09:16:49
    GMT)
    X-Complaints-To: u...@a...pl
    NNTP-Posting-Date: Sat, 25 Feb 2017 09:16:49 +0000 (UTC)
    User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101
    Thunderbird/45.7.1
    In-Reply-To: <o8q82k$a99$1@node2.news.atman.pl>
    Xref: news-archive.icm.edu.pl pl.comp.programming:210280
    [ ukryj nagłówki ]

    W dniu 24.02.2017 o 22:20, bartekltg pisze:
    > Potem drzewo budujesz przechocząc taki zestaw stringów,
    > jeśli kolejny element jest taki jak istneijący potomek
    > wierzchołka, w który jesteś, wchodzisz w niego, jeśli
    > nie, dodajesz do drzewa.
    >
    > W sumie to nie wymaga ani przerobienia stringa na
    > wektor strongów, ani sortowania.

    internal void make(Chunk chunk)
    {
    this.chunk = chunk;
    List<ItemArch> list = makePathList();
    root = new Node();
    foreach (ItemArch elem in list)
    {
    Node node = root;
    foreach (string part in elem.parts)
    {
    Node node1 = node.search(part);
    if (node1 != null) node = node1;
    else node = node.add(part);
    }
    node.index = elem.index;
    }
    }

    Długotrwała jest operacja search, ale gdy mamy posortowane, to jeśłi
    znajdzie to zawsze ostatni, co sprawdziłem dla Assert:
    internal Node search(string name)
    {
    if (childs == null) return null;
    for (int i=0; i<childs.Count; i++)
    {
    Node child = childs[i];
    if (child.name == name)
    {
    Debug.Assert(i== childs.Count-1);
    Console.WriteLine("found at "+i+" where size="+
    childs.Count);
    return child;
    }
    }
    return null;
    }
    Czyli można zoptymalizować.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: