Skocz do zawartości
Zamknięcie Forum PC LAB

Szanowny Użytkowniku,

Informujemy, że za 30 dni tj. 30 listopada 2024 r. serwis internetowy Forum PC LAB zostanie zamknięty.

Administrator Serwisu Forum PC LAB - Ringier Axel Springer Polska sp. z o.o. z siedzibą w Warszawie: wypowiada całość usług Serwisu Forum PC LAB z zachowaniem miesięcznego okresu wypowiedzenia.

Administrator Serwisu Forum PC LAB informuje, że:

  1. Z dniem 29 listopada 2024 r. zakończy się świadczenie wszystkich usług Serwisu Forum PC LAB. Ważną przyczyną uzasadniającą wypowiedzenie jest zamknięcie Serwisu Forum PC LAB
  2. Dotychczas zamowione przez Użytkownika usługi Serwisu Forum PC LAB będą świadczone w okresie wypowiedzenia tj. do dnia 29 listopada 2024 r.
  3. Po ogłoszeniu zamknięcia Serwisu Forum od dnia 30 października 2024 r. zakładanie nowych kont w serwisie Forum PC LAB nie będzie możliwe
  4. Wraz z zamknięciem Serwisu Forum PC LAB, tj. dnia 29 listopada 2024 r. nie będzie już dostępny katalog treści Forum PC LAB. Do tego czasu Użytkownicy Forum PC LAB mają dostęp do swoich treści w zakładce "Profil", gdzie mają możliwość ich skopiowania lub archiwizowania w formie screenshotów.
  5. Administrator danych osobowych Użytkowników - Ringier Axel Springer Polska sp. z o.o. z siedzibą w Warszawie zapewnia realizację praw podmiotów danych osobowych przez cały okres świadczenia usług Serwisu Forum PC LAB. Szczegółowe informacje znajdziesz w Polityce Prywatności

Administrator informuje, iż wraz z zamknięciem Serwisu Forum PC LAB, dane osobowe Użytkowników Serwisu Forum PC LAB zostaną trwale usunięte ze względu na brak podstawy ich dalszego przetwarzania. Proces trwałego usuwania danych z kopii zapasowych może przekroczyć termin zamknięcia Forum PC LAB o kilka miesięcy. Wyjątek może stanowić przetwarzanie danych użytkownika do czasu zakończenia toczących się postepowań.

Temat został przeniesiony do archiwum

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

RafiX_

[php]Jak to posortowac ?

Rekomendowane odpowiedzi

mam taka tablice:

 

$pliki[0] => 1.txt

$pliki[1] => 10.txt

$pliki[2] => 11.txt

$pliki[3] => 12.txt

$pliki[4] => 13.txt

$pliki[5] => 14.txt

$pliki[6] => 15.txt

$pliki[7] => 16.txt

$pliki[8] => 17.txt

$pliki[9] => 18.txt

$pliki[10] => 19.txt

$pliki[11] => 2.txt

$pliki[12] => 20.txt

$pliki[13] => 21.txt

$pliki[14] => 22.txt

$pliki[15] => 23.txt

$pliki[16] => 24.txt

$pliki[17] => 25.txt

$pliki[18] => 26.txt

$pliki[19] => 27.txt

$pliki[20] => 28.txt

$pliki[21] => 29.txt

$pliki[22] => 3.txt

$pliki[23] => 30.txt

$pliki[24] => 31.txt

$pliki[25] => 32.txt

$pliki[26] => 33.txt

$pliki[27] => 34.txt

$pliki[28] => 35.txt

$pliki[29] => 36.txt

$pliki[30] => 37.txt

$pliki[31] => 38.txt

$pliki[32] => 39.txt

$pliki[33] => 4.txt

$pliki[34] => 40.txt

$pliki[35] => 41.txt

$pliki[36] => 42.txt

$pliki[37] => 43.txt

$pliki[38] => 44.txt

$pliki[39] => 45.txt

$pliki[40] => 46.txt

$pliki[41] => 47.txt

$pliki[42] => 48.txt

$pliki[43] => 49.txt

$pliki[44] => 5.txt

$pliki[45] => 50.txt

$pliki[46] => 51.txt

$pliki[47] => 52.txt

$pliki[48] => 53.txt

$pliki[49] => 54.txt

$pliki[50] => 55.txt

$pliki[51] => 56.txt

$pliki[52] => 6.txt

$pliki[53] => 7.txt

$pliki[54] => 8.txt

$pliki[55] => 9.txt

$pliki[56] => 57.txt

$pliki[57] => 58.txt

$pliki[58] => 59.txt

$pliki[59] => 60.txt

$pliki[60] => 61.txt

$pliki[61] => 62.txt

itd...

 

i teraz tak jak to posortowac zeby bylo w takiej kolejnosci:

 

$pliki[0] => 1.txt

$pliki[1] => 2.txt

$pliki[2] => 3.txt

$pliki[3] => 4.txt

$pliki[4] => 5.txt

$pliki[5] => 6.txt

$pliki[6] => 7.txt

$pliki[7] => 8.txt

$pliki[8] => 9.txt

$pliki[9] => 10.txt

$pliki[10] => 11.txt

$pliki[11] => 12.txt

$pliki[12] => 13.txt

$pliki[13] => 14.txt

$pliki[14] => 15.txt

itd.....

 

roznica polega na tym ze jest to w "ludzkiej" kolejnosci a nie tak ze np. po "1" jest "100" itp...

 

prosze o szybka pomoc

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Najlatwiej jest metoda naiwna, Czyli wybierac najmniejsza wartosc wstawiac ja do tablicy posortowanych i "usuwac z pierwotnej tablicy. Zeby nie wychodzily kwiatki w rodzaju ze po 1 jest 100 proponuje na poczatku posortowac elementy wzgledem dlugosci, i potem dopiero wzgledem wartosci(nalezy jednak poamietac zeby po posortowaniu wzgledem dlugosci nalezy sortowac razem tylko elementy o jednakowej dlugosci)

 

Chyba to troszke pokrecone wyszlo ale mam nadzieje ze pomoze. Pozdroofka

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

yyy... a mogłbys mi to pokazac na jakims przykłądzie ??

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

import java.util.*;

public class php

{

public static int porownaj(String a, String B)

{

if(a.length() > b.length()) return -1;

else if(a.length() < b.length()) return 1;

else

{

for(int i = 0; i < a.length(); i++)

{

if(a.charAt(i) > b.charAt(i)) return -1;

else

if(a.charAt(i) < b.charAt(i)) return 1;

}

 

}

return 0;

 

}

public static void main(String[] args)

{

ArrayList pliki = new ArrayList();

ArrayList wynik = new ArrayList();

pliki.add("plik4.txt");

pliki.add("plik100.txt");

pliki.add("plik5.txt");

pliki.add("plik12.txt");

pliki.add("plik17.txt");

pliki.add("plik90.txt");

pliki.add("plik89.txt");

pliki.add("plik1.txt");

pliki.add("plik9.txt");

pliki.add("plik189.txt");

pliki.add("plik34.txt");

while(pliki.size() != 0)

{

String tmp = (String)pliki.get(0);

int index = 0;

for(int i = 0; i < pliki.size(); i++)

{

if(porownaj((String)pliki.get(i), tmp) == 1)

{

tmp = "" + (String)pliki.get(i);

index = i;

}

}

wynik.add("" + tmp);

pliki.remove(index);

}

 

for(int i = 0; i < wynik.size(); i++)

System.out.println(wynik.get(i));

 

 

 

}

}

 

W taki sposob mozna posortowac Stringi (ktora sa na przyklad nazwami plikow). Mysle ze nie powinienes miec problemow z konwersja tego z Javy jak i z przerobieniem tego tak zeby sortowalo pliki (bo z tego co rozumiem to tego wlasnie dazysz).

 

W kwestji wyjasnien. ArrayList to taka mila, dynamiczna struktura danych.

Funkcja add() dodaje element na koncu

Funkcja remove(int index) usuwa element z miejsca o numerze index i skraca cala tablice tak zeby nie bylo wolnego miejsca. Przyklad:P

nasz ArrayList wyglada np tak:

plik1.txt

plik4.txt

plik2.txt

 

po add("plik12.txt")

 

plik1.txt

plik4.txt

plik2.txt

plik12.txt

 

po remove(1)

 

plik1.txt

plik2.txt

plik12.txt

 

Mysle ze to powinno rozjasnic mniej wiecej sposob na pokonanie tego problemu. Powodzenia

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

<?

for ($i = 0; $i < sizeof($pliki); $i++) $pliki[$i] = ereg_replace(".txt", "", $pliki[$i]);

$pliki = sort($pliki);

for ($i = 0; $i < sizeof($pliki); $i++) $pliki[$i] .= ".txt";

?>

 

 

Nie wiem pisalem to bez sprawdzania i po 3 miesiecznej przaerwie w programowaniu... Ale powinno dzialac :)

 

[Edytowane: 18/7/2003 przez Weasel]

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Nie no jednak sklaniam sie ku opcji

 

<? natsort($pliki); ?>

 

Tak chyba bedzie najlatwiej ;)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Nie no jednak sklaniam sie ku opcji

 

<? natsort($pliki); ?>

 

Tak chyba bedzie najlatwiej ;)

 

Kuźna ten php jest szałowy.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jest taki sam jak kazdy inny ;)

Tylko ludzie po prostu siadaja i pisza odpowiednie funkcje, zeby nie trzeba bylo tego samemu robic - to podstawa rozwoju. Trzeba tylko pamietac, ze PHP z wersji na wersje jest coraz wiekszy...

 

Nie wiem szczerze mowiac czy cosjest teraz od PHP lepsze... Chcialbym zobaczyc co potrafi ASP, ale to jakies takie odpychajace...

 

Ludzie, powiedzcie cos o tym .NET bo szczerze mowiac sie nie zaglebialem w niego...

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...