Problem polega na tym, że mam listę 1 miliona numerów, ale chcę tylko 10 pierwszych posortowanych list, ale nie chcę sortować cała lista? Czy to jest możliwe?Jak uzyskać pierwsze 10 posortowanych pozycji z listy bez sortowania całej listy?
7
A
Odpowiedz
6
Tak. Po prostu przeszukujesz listę raz i przechowujesz dziesięć najmniejszych liczb. Algorytm będzie miał postać O (n) (właściwie, O (n * 10) worstcase)
Foreach (list)
- Check if current item is smaller than the biggest item in the sorted Array[10]
- If so, put the current item at the right spot (sorted) in the array (insertionsort), bumping away the biggest item.
6
To, czego potrzebujesz, to kolejka priorytetowa. Wstaw każdy numer do kolejki priorytetowej. Jeśli rozmiar kolejki przekracza 10, usuń najmniejszą (lub największą) wartość. Wartości pozostające w kolejce na końcu to 10 największych (lub najmniejszych).
Jeśli kolejka jest zaimplementowana za pomocą sterty, może to być bardzo skuteczny algorytm.
Powiązane problemy
- 1. sortowania listy listy w python
- 2. LINQ Pierwsze unikalnych przedmiotów z listy obrębie listy
- 3. Pierwsze pierwsze nie Brak wartości z listy
- 4. Usuwanie pozycji listy z DropDownList
- 5. usuwanie pozycji z listy weak_ptrs
- 6. Widok listy Przyciągnij do pozycji
- 7. Metoda LINQ do sortowania listy na podstawie większej listy
- 8. Uzyskiwanie pozycji listy według indeksu
- 9. Szczegółowe zakres pozycji listy (LINQ)
- 10. Zmiana atrybutów widoku na pozycji pozycji listy
- 11. Jak wykonać arytmetykę sortowania listy list
- 12. sortowania listy zagnieżdżonych słowników w python
- 13. mechanizm uzyskać elementu z listy
- 14. Pierwsze x Najpierw elementu z listy
- 15. Clojure drukowanie listy bez nawiasów?
- 16. Usuwanie pozycji z listy po spełnieniu warunku
- 17. Jak mogę dodać do pierwszej pozycji listy?
- 18. Jak mogę znaleźć indeks pozycji listy przy wartości pozycji?
- 19. Python: Jak usunąć puste listy z listy?
- 20. Pandy: uzyskać pierwsze 10 elementy serii
- 21. Jak zaimplementować plik SkipWhile za pomocą Linq do Sql bez wcześniejszego załadowania całej listy do pamięci?
- 22. C# Usuwanie listy z listy
- 23. JQuery uzyskać wszystkie dane atrybuty z listy
- 24. Jak uzyskać takie zagnieżdżone listy?
- 25. Guava sposób sortowania Lista według innej listy?
- 26. python: pobierz numer pozycji z listy (sekwencja) z pewnym warunkiem
- 27. Jak mogę przeciągnąć z podłączonej listy pionowej do pierwszej pozycji z innej listy poniżej za pomocą jQueryUI Sortable?
- 28. Sortowanie listy rodzajowe przez zewnętrznego porządku sortowania
- 29. Elementy listy sortowania w Elixir Lang
- 30. Odbicie get właściwość obiektu do sortowania listy
Możesz zmienić to 10 w stałą opartą na lg, używając sterty dla twojej "listy" 10. :-) – corsiKa
O (n * 10) = O (n). – recursive
rekursywny: kurs, ale to wyjaśnia, że gdy liczba 10 jest wyższa (powiedzmy, że chcesz połowę posortowanej listy), O zmieni się, a prosta tablica nie będzie. Będziesz wtedy potrzebował lepszej bazy danych, takiej jak glowcoder. – Konerak