Sortowanie tablicy
A może sma?
29.04.2012
Siemanko.
Mam tablice z liczbami naturalnymi. Chce ją posortować malejąco (tzn. indeks 0 zawiera największy element);
To co? SortCustom1D i jedziemy? No nie do końca...
Oprócz tej tablicy podczas sortowania, dwie inne (string i integer) muszą "podążać" za pierwszą.
Mógłby mi ktoś podrzucić pomysł jak to zrobić...? Próbowałem sortowania bąbelkowego (może jakieś inne użyć?) w taki sposób:
Co robię źle? ;F
Generalnie to tablica jest małych rozmiarów (mniejsza niż 15 elementów)
Mam tablice z liczbami naturalnymi. Chce ją posortować malejąco (tzn. indeks 0 zawiera największy element);
To co? SortCustom1D i jedziemy? No nie do końca...
Oprócz tej tablicy podczas sortowania, dwie inne (string i integer) muszą "podążać" za pierwszą.
Mógłby mi ktoś podrzucić pomysł jak to zrobić...? Próbowałem sortowania bąbelkowego (może jakieś inne użyć?) w taki sposób:
new i = MAX_TOP;
while(i > 0)
{
for(new j = 0; j < MAX_TOP - 2; j++)
{
if(jumps_top[j] < jumps_top[j+1])
{
new temp_name_top[31], temp_jumps_top, temp_level_top;
copy(temp_name_top, 31, name_top[j]);
temp_jumps_top = jumps_top[j];
temp_level_top = level_top[j];
copy(name_top[j], 31, name_top[j+1]);
jumps_top[j] = jumps_top[j+1];
level_top[j] = level_top[j+1];
copy(name_top[j+1], 31, temp_name_top);
jumps_top[j+1] = temp_jumps_top;
level_top[j+1] = temp_level_top;
}
}
i -= 1;
}
Co robię źle? ;F
Generalnie to tablica jest małych rozmiarów (mniejsza niż 15 elementów)
G[o]Q
29.04.2012
wiem ze to wymaga dosc dlugiego i intensywnego myslenia ale oto jestem i ci pomoge
http://amxx.pl/dokum...31/sortcustom1d
masz calbacka to przy zwracaniu wartosci przy okazji sobie zamien wartosci z innych tablic
ewentualnie piszesz wlasną interpretacje jednego z algorytmów sortujących najlatwiej zrobic bombelkowe
http://amxx.pl/dokum...31/sortcustom1d
masz calbacka to przy zwracaniu wartosci przy okazji sobie zamien wartosci z innych tablic
ewentualnie piszesz wlasną interpretacje jednego z algorytmów sortujących najlatwiej zrobic bombelkowe
A może sma?
29.04.2012
Edit2: Bo jednak tego... Skąd mam wziąć indeks porównywanych elementów tablicy...?
sebul
01.05.2012
SortCustom2D?
Ogólnie nie bardzo rozumiem co chcesz dokładnie osiągnąć, ale może ten kod trochę Ci ułatwi przyswojenie takiego sortowania.
Ogólnie nie bardzo rozumiem co chcesz dokładnie osiągnąć, ale może ten kod trochę Ci ułatwi przyswojenie takiego sortowania.
public Fragi() {
new sort[33][2];
new count, i;
for(i=1; i<=32; ++i) {
if(is_user_connected(i)) {
sort[count][0] = get_user_frags(i);
sort[count++][1] = i;
}
}
SortCustom2D(sort, count, "sortuj");
for(i=0; i<count; ++i)
client_print(0, print_chat, "Fragi: %i | ID: %i", sort[i][0], sort[i][1]);
}
public sortuj(elem1[], elem2[]) {
if(elem1[0] > elem2[0])
return -1;
else if(elem1[0] < elem2[0])
return 1;
return 0;
}
A może sma?
01.05.2012
Co chcę osiągnąć? Krótko mówiąc - chcę zrobić statystyki powiedzmy 15 najlepszych graczy, które są wczytywane z pliku.
Chcę wczytać z pliku *.ini informacje do dwóch tablic - jedna zawiera liczby, druga nick gracza.
Myślałem by zrobić to w ten sposób:
- wczytać informacje do dwóch tablic (pierwsza zawiera liczby, według których chciałem sortować tą tablice, druga zawiera nicki graczy)
- sprawdzać podczas gry czy ktoś jest lepszy od ostatniego gracza z pliku
- jeżeli tak, to wrzucić go jako ostatni element tablicy i ją posortować, bo będąc lepszym od ostatniego, mógł być jednocześnie lepszy od przedostatniego itd.
I mój problem sporowadza się do samego sortowania - nie wiem jak zrobić, by druga tablica (zawierająca nicki), była "sortowana" wraz z pierwszą - tzn. jeżeli np. ostatni element tablicy pierwszej szedł na jej początek, to żeby to samo działo się z drugą tablicą...
Chcę wczytać z pliku *.ini informacje do dwóch tablic - jedna zawiera liczby, druga nick gracza.
Myślałem by zrobić to w ten sposób:
- wczytać informacje do dwóch tablic (pierwsza zawiera liczby, według których chciałem sortować tą tablice, druga zawiera nicki graczy)
- sprawdzać podczas gry czy ktoś jest lepszy od ostatniego gracza z pliku
- jeżeli tak, to wrzucić go jako ostatni element tablicy i ją posortować, bo będąc lepszym od ostatniego, mógł być jednocześnie lepszy od przedostatniego itd.
I mój problem sporowadza się do samego sortowania - nie wiem jak zrobić, by druga tablica (zawierająca nicki), była "sortowana" wraz z pierwszą - tzn. jeżeli np. ostatni element tablicy pierwszej szedł na jej początek, to żeby to samo działo się z drugą tablicą...
sebul
01.05.2012
Można chyba się obejść bez sortowania drugiej tablicy. Zapisz nicki gracza w drugiej tablicy w kolejności id graczy, potem posortuj pierwszą tablicę tym sposobem, który podałem, a na sam koniec w pętli nicki możesz wyciągać przez id gracza z drugiej tablicy, czyli np.
Ogólnie jeśli to mają być nicki, to czy jest sens robienia tego za pomocą tablicy? Przecież nick można pobrać później, po posortowaniu pierwszej tablicy.
nicki_graczy[sort[i][1]];
Ogólnie jeśli to mają być nicki, to czy jest sens robienia tego za pomocą tablicy? Przecież nick można pobrać później, po posortowaniu pierwszej tablicy.