Wyszukiwanie liczby w liście

0

Męczę się z tym już drugi dzień próbuje na różne sposoby ale ni jak mi nie wychodzi. Można ktoś z was zna gotowca. Może jest to gdzieś już w c#?

no więc mam listę z liczbami int (losowymi) . Ta lista na początku jest pusta i ją powoli musze uzupełnić. z tym że każda kolejna liczba musi być ułożona wg swojej wartości (np. 1,24 ,33 , 55, ).

Liczb losowych może być kilkadziesiąt tysięcy więc aby działo się to szybko chce to zrobić tak że:

zaglądam do listy w indeksie - [ wszystkieLiczby/2 ] i sprawdzam czy moja liczba x jest od tej liczby większa jeśli jest to biorę połowe połowy i znowu itd. aż znajde miejsce gdzie ona jest.(Próbowałem to zrobić chyba z setkę razy i mnie już szlag trafia [glowa] )

Aby było trudniej jeżeli moja liczba losowa już jest w liście to mam dostać informacje zwrotną że ta liczba już jest w liście na pozycji y . Jeśli jej nie ma to mam dostać index na którym mam ją wsadzić (tak aby nie naruszyć kolejności liczb) i informacje że jej nie ma.

0

Innymi slowy chcesz posortowac losowe liczby, tak? Luknij sobie na sortowanie kopcowe (heapsort). Zeby wiedziec, ktora pozycje ma dana liczba (albo, ktora powinna miec) mozesz zapisywac w galeziach odpowiednie pozycje liczb po wstawieniu kolejnej (czyli idziesz w gore drzewa i poprawiasz odpowiednie wartosci).

Normalnie moglbys robic tak jak robisz (czyli wyszukiwanie polowkowe), ale lista sie kiepsko do tego nadaje w zwiazku z wolnym dostepem do konkretnego indeksu.

0

To znaczy u mnie program przebiega tak:

  1. pobranie losowej liczby
  2. sprawdzenie czy jej nie ma na liście, jeśli jest powiadom o tym i o pozycji na ktorej sie znajduje(ale nie dodawaj)
  3. jesli nie ma podaj miejsce gdzie powinna być aby nie naruszyć porządku, kolejności liczb (rosnącej)
  4. (w innym miejscu programu dodaje tą liczbe na wskazane miejsce )
  5. wracam do punktu 1

i tak to musi przebiegać. Wcześniej robiłem to liniowo ale sprawdzić 30 000 liczb 30 000 razy to zajmuje kuupe czasu. A co do sposobu , obawiam się nie tyle czym to zrobić tylko jak to zaimplementować, bo z wyszukiwaniem połówkowym sobie po prostu nie poradziłem.

Wiec moze są jakieś gotowce albo jest to juz gdzies zaimplementowane w c# ?

0

znalazłem gotowca także problem rozwiązany .

Dzięki za zainteresowanie i sorki za kłopot.

1 użytkowników online, w tym zalogowanych: 0, gości: 1