Wpis z mikrobloga

#python

Czy jakiś miły programista pythona mógłby mi powiedzieć jak wygenerować w pythonie tablicę liczb prawie posortowanych?
Potrzebne mi to jest do przetestowania mojego algorytmu sortujacego, a testuje go dla roznych tablic. Mam gaussa, mam totalny random itp tylko tych prawie posortowanych mi brakuje to testu :<
  • 12
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@miszczu_blady: na to też wpadłem, jednak myślałem, że jest do tego natywna funkcja. Już tyle razy klepałem kod, który dało się skrócić do jednej linijki za pomocą jakiejś funkcji, że teraz pomyślałem, że zapytam bo być może da się to zrobić w taki sposób.

@Ginden: Dzięki. Spróbuję.
  • Odpowiedz
@M4lutki: Posortuj tablice A
Utwórz pusta tablice B
Napisz metodę, która wylosuje Ci element spośród trzech pierwszych elementów tablicy A, doda go do tablicy B i skasuje z A.
Wykonaj ja w pętli odpowiednią ilość razy.
Żeby modyfikować ułożeniem tablicy B możesz:
- losować z 2 albo 4 czy
  • Odpowiedz
@M4lutki: Albo inaczej - bierzesz pierwiastek z długości tablicy, zaokraglasz go do najbliższej liczby nieparzystej. Oznaczmy ją jako m.
Potem mieszasz całkiem losowo m elementów z początku tablicy, modyfikując ją. W następnym kroku mieszasz elementy od (floor(m/2)) do (floor(m/2))+m.
Wykonuje się to w czasie O(n^(3/2)) bodajże.
  • Odpowiedz