M4lutki
#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 :<
  • Najlepsze
  • Wszystkie komentarze
MasterSoundBlaster
@M4lutki:
1. Posortuj tablicę.
2. Ostatni element przenieś na początek.
3. Masz tablicę prawie posortowaną.
MasterSoundBlaster
@M4lutki:

Właśnie chodzi o to, że chciałbym by wszystkie liczby były na "nie swoich" pozycjach, jednak niedaleko od nich.

I mój sposób nie spełnia tego? Spełnia przecież.
M4lutki
M4lutki Autor
3
@achr: @aseeon:

Właśnie o taką magię pythona mi chodziło :D
Dzięki Panowie, co prawda pytanie już nieaktualne, ale dobrze się dowiedzieć czegoś nowego :)
miszczu_blady
@M4lutki: posortuj tablicę i przestaw każdy element o jedno, dwa miejsca w przód lub w tył
G.....n
G.....n
@M4lutki: Zrób posortowaną tablicę i zrób bubble sorta, który w 20% przypadków odwraca liczby.
a.....n
a.....n
@M4lutki: a


numbers = [i 
for i in xrange(1000)]
almost_sorted = 
list(chain(*zip(numbers[1::2], numbers[::2])))

nie wystarczy?
M4lutki
M4lutki Autor
  • adult
1
Treść przeznaczona dla osób powyżej 18 roku życia...
venomik
@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
G.....n
G.....n
@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.
M4lutki
M4lutki Autor
1
@venomik: Dzięki, tak zrobiłem. Elegancko działa :)

@Ginden: Dzięki jeszcze raz raz pomysły.

Przeziębiłem się kurka wodna i w głowie papka zamiast mózgu.
M4lutki
M4lutki Autor
0
@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ę.
achr
achr
0
@M4lutki:
A[-1:] + A[:-1]