10. marts 2003 - 09:24Der er
3 kommentarer og 1 løsning
Forslag til algoritme
Hej!
Hovedet er endnu ikke helt klart her mandag morgen, så jeg kunne godt lige bruge et par forslag til en løsning på følgende:
Jeg har i en mappe en række filer, f.eks. 100, hvor af de 30 nyeste skal placeres i en Vector.
Hvordan finder jeg ud af det på én eller anden smart måde? Det skal siges, at koden skal afvikles automatisk på en server. Derfor skal den helst være rimeligt effektiv.
public FileSorter(File file) { File[] files = file.listFiles(); long[] fileLengths = new long[files.length];
for( int i = 0; i < files.length; i++ ) { fileLengths[i] = files[i].length(); }
Arrays.sort(fileLengths);
for( int i = fileLengths.length-1; i >= 0; i-- ) { System.out.println (fileLengths[i]); } } } class Go { public static void main(String[] args) { new FileSorter(new File("C:/")); } }
Øhm, hvis arrays.sort kører i tid O(n) tror jeg nok det er verdensrekord :)
Her er citat fra java api'en, som mere realistisk angiver O(n*log n) som udførselstid.
sort public static void sort(long[] a)Sorts the specified array of longs into ascending numerical order. The sorting algorithm is a tuned quicksort, adapted from Jon L. Bentley and M. Douglas McIlroy's "Engineering a Sort Function", Software-Practice and Experience, Vol. 23(11) P. 1249-1265 (November 1993). This algorithm offers n*log(n) performance on many data sets that cause other quicksorts to degrade to quadratic performance.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.