Avatar billede jonasbc Nybegynder
10. marts 2003 - 09:24 Der 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.

På forhånd tak for hjælpen.
Avatar billede viht Nybegynder
10. marts 2003 - 10:53 #1
Her er 3 O(n) operationer, der gør det ønskede.

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.io.*;
import java.util.Arrays;

public class FileSorter {
   
    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:/"));
  }
}
Avatar billede jonasbc Nybegynder
10. marts 2003 - 11:20 #2
Takker!
Avatar billede Slettet bruger
10. marts 2003 - 14:08 #3
Ø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.

Parameters:
a - the array to be sorted.
Avatar billede arne_v Ekspert
10. marts 2003 - 14:16 #4
:-)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester