Avatar billede data2k.dk Nybegynder
07. december 2004 - 09:44 Der er 13 kommentarer og
1 løsning

sortere strings

Hejsa

nogen som kunne lave et hurtigt og simpelt eksempel på hvordan man sortere nogen strings? ikke ved hjælp af Arraylist's sort... en selvlavet metode: ) har lavet det før med compareto.
Avatar billede data2k.dk Nybegynder
07. december 2004 - 09:47 #1
vil faktisk  komme med min hægtede liste add metode... det som bliver tilføjet skal blive sorteret....

  public void add (Magazine mag)
  {

      MagazineNode node = new MagazineNode (mag);
      MagazineNode current, tmp, ny;
   
      if (list == null)
        list = node;
      else
      {
        current = list;
        while (current.next != null)
        {
            current = current.next;
            counter++;
        }
        current.next = node;
       
 
      }
  }


i en node er en reference til et Magazine object som har en toString metode som man kan kalde og sortere efter
Avatar billede data2k.dk Nybegynder
07. december 2004 - 09:48 #2
rettelse
MagazineNode current, tmp, ny;

=

MagazineNode current;
Avatar billede kalp Novice
07. december 2004 - 10:04 #3
public static void Sorter (String[] liste)
  {
      String min, temp;

      for (int index = 0; index < liste.length-1; index++)
      {
        min = index;
        for (int scan = index+1; scan < liste.length; scan++)
            if(liste[scan].compareToIgnoreCase(liste[min]) > 0)
                min = scan;

        // Swap the values
        temp = numbers[min];
        numbers[min] = numbers[index];
        numbers[index] = temp;
      }
  }


tror du kan anvende denne metode til at sortere tekst... har ikke testet den men tilrettet den... orginal var til sortering af tal.
Avatar billede kalp Novice
07. december 2004 - 10:06 #4
// Swap the values
        temp = liste[min];
        liste[min] = liste[index];
        liste[index] = temp;

var jeg lidt for hurtigt.. skal lige rettes til det der
Avatar billede kalp Novice
07. december 2004 - 10:09 #5
int min, temp;

endnu en rettelse hehe
Avatar billede data2k.dk Nybegynder
07. december 2004 - 10:25 #6
andre med forslag? pointsatsen er sat lidt op.
Avatar billede data2k.dk Nybegynder
07. december 2004 - 10:33 #7
har rettet lidt på dit forslag kalp.. og det virker ikke helt

public void Sorter (MagazineNode liste, int counter)
  {
      MagazineNode temp = list;

      for (int index = 0; index < counter; index++)
      {
           
            if(liste.magazine.toString().compareToIgnoreCase(liste.next.magazine.toString()) < 0)
              liste = liste.next;

        // Swap the values
        temp.magazine = liste.magazine;
        liste.magazine = liste.next.magazine;
        liste.next.magazine = temp.magazine;
      }
  }


den udskriver


Aha
Aha
Communications of the ACM
Buhh
GQ


men den får følgende ind

  rack.add (new Magazine("Time"));
      rack.add (new Magazine("Aha"));
      rack.add (new Magazine("Communications of the ACM"));
      rack.add (new Magazine("Buhh"));
      rack.add (new Magazine("GQ"));
Avatar billede data2k.dk Nybegynder
07. december 2004 - 10:46 #8
hvis min kode er forvirrende kan en eller anden ikke komme med et eksempel på hvordan man sortere en linked list i alfabetisk rækkefølge?
Avatar billede kalp Novice
07. december 2004 - 11:07 #9
det her virker


public class Test
{
  public static void main(String[] args)
  {
String[] liste = new String[5];

liste[0] = "Bedst";
liste[1] = "Marie";
liste[2] = "Allan";
liste[3] = "Cecillie";
liste[4] = "Abe";



int min;
String temp;

      for (int index = 0; index < liste.length-1; index++)
      {
        min = index;
        for (int scan = index+1; scan < liste.length; scan++)
            if(liste[scan].compareToIgnoreCase(liste[min]) < 0)
                min = scan;

        // Swap the values
        temp = liste[min];
        liste[min] = liste[index];
        liste[index] = temp;
      }


for(int i = 0; i < liste.length; i++)
{
  System.out.println(liste[i]);
}
  }
 
}
Avatar billede data2k.dk Nybegynder
07. december 2004 - 11:44 #10
jeg er vågnet lidt op nu.. hvorfor virker denne sortering ikke? når jeg printer ud er alt som det stod før!
list og counter er attributter i samme klasse.

  public void sorter()
  {
   
    MagazineNode current = list;
    Magazine tmp;
        int b = 0;
        while(b < counter)
        {
        if(current.magazine.toString().compareToIgnoreCase(current.magazine.toString()) < 0)
        {
          tmp = current.next.magazine;
          current.next.magazine = current.magazine;
          current.magazine = tmp;
          current = current.next;
          b++;
          }
          b++;
        }
       
  }
Avatar billede data2k.dk Nybegynder
07. december 2004 - 11:45 #11
jeg prøver sådan set bare at bytte en magazine over med et andet..
Avatar billede data2k.dk Nybegynder
07. december 2004 - 11:49 #12
flere point.. det vigtigt jeg får det løst
Avatar billede kalp Novice
07. december 2004 - 12:59 #13
prøv det her.. sjovt forslag hehe.. men tror det virker


  public void sorter() throws Exception
  {

    MagazineNode current = list;
    Magazine ny;
 
  for(int i = 0; i < counter; i++)
  {
        while(current.next != null)
        {
        if(current.magazine.toString().compareToIgnoreCase(current.next.magazine.toString()) > 0)
        {
        ny = current.magazine;
        current.magazine = current.next.magazine;
        current.next.magazine = ny;
         
        current = current.next;
          }
          else
          {
 
          current = current.next;   
          }
        }
        current = list;
  }

  }



og kan se du har kald din klasse for rack.. så kald metoden med følgende

try{ rack.sorter();
    }
    catch(Exception ie)
    {}
Avatar billede data2k.dk Nybegynder
07. december 2004 - 13:08 #14
WOOOOOOOOOOW!!! TAK!!! VIRKER!! DU HAR LIGE REDDET MIN RØV!!
Tusind tak!!
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