![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 6.01.2004 Skąd: wawa Ostrzeżenie: (10%) ![]() ![]() |
Jak moge w n- elementowej tablicy kazdemu z elementow przypisac losowo wartosc ze zbioru n, przy czym zeby w kazdym elemencie byla inna wartosc (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
|
|
|
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
kazdemu elementowi i przypisujesz wartosc i
for ( i = 0 => n) { array[ i ] = i; } teraz trzeba troche pomieszac ta tablice for (ilestamRazy) { j = losowaLiczba( 0, n) i = losowaLiczba( 0, n) zamien( array[ i ], array[ j ] ) } Ten post edytował dr_bonzo 3.01.2006, 16:31:12 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 6.01.2004 Skąd: wawa Ostrzeżenie: (10%) ![]() ![]() |
o men. sprytnie. dzieki. Jeszcze tylko pytanko jaka jest komenda na zamiane tych
wartosci?? chodzi o te linijke "zamien( array[ i ], array[ j ] )" |
|
|
![]()
Post
#4
|
|
Administrator PHPedia.pl Grupa: Developerzy Postów: 1 102 Pomógł: 2 Dołączył: 14.09.2003 Ostrzeżenie: (0%) ![]() ![]() |
Kod void swap(int &a; int &b) {
int tmp; tmp = a; a = b; b = tmp; } |
|
|
![]()
Post
#5
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Musisz miec specjalny kompilator Microsoftu (niestety kosztuje kupe $$$) i do osiagniecia jest to tlyko pod Solarisem. Ale slyszalem o rozwiazaniach z uzyciem dodatkowej zmiennej, szlo jakos tak
x = a[ i ] a[ i ] = a[ j ] a[ j ] = x ale nie sprawdzalem tego nigdy, wiec moga byc bledy PS. Troche ironii zachecajacej do odrobiny myslenia. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 179 Pomógł: 0 Dołączył: 9.11.2004 Ostrzeżenie: (0%) ![]() ![]() |
Jest sprytne rozwiązanie bez dodatkowych zmiennych, bez swapa() z algorithm.h - polega na kilkukrotnym XORowaniu (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Kod // ogolnie a^=b^=a^=b; // w twoim wypadku array[i]^=array[j]^=array[i]^=array[j]; Nie wiem jak z efektywnością tego rozwiązania - jedno jest pewne - działa (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Jak ktoś nie wierzy niech sobie rozpisze bity i sie przekona. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 20:20 |