2007-01-22, 21:48
  #1
Medlem
Vill sortera int vrden med 0-20 s att det blir rtt. Nr jag anvnder Sort() p en array sorterar den 1,10,11,12,13 osv men vill att den ska sortera efter 1,2,3,4,5,6,7,8,9,10,11,12,13 osv. Hur gr man detta?
Citera
2007-01-22, 22:13
  #2
Medlem
luulens avatar
Citat:
Ursprungligen postat av zman
Vill sortera int vrden med 0-20 s att det blir rtt. Nr jag anvnder Sort() p en array sorterar den 1,10,11,12,13 osv men vill att den ska sortera efter 1,2,3,4,5,6,7,8,9,10,11,12,13 osv. Hur gr man detta?
Vad r det i 1,10,11,12,13 som inte r sorterat? Har du verkligen 2,3,...,9 med i arrayen? Verkar lurt.
Citera
2007-01-22, 22:15
  #3
Medlem
ChristianXs avatar
Vilken datatyp anvnder du? Nu sorterar du ju alfanumeriska vrden, r de verkligen numeriska?
Citera
2007-01-22, 22:19
  #4
Medlem
Citat:
Ursprungligen postat av luulen
Vad r det i 1,10,11,12,13 som inte r sorterat? Har du verkligen 2,3,...,9 med i arrayen? Verkar lurt.

Det jag skrev dr r sorterat.. men 2,3 kommer efter 19..

Fr vl skriva ut allt d:

s sorterar den nu:
1 10 11 12 13 14 15 16 17 18 19 2 20 21 22 23 24 25 26 27 28 29 3 30 31 ......

s hr vill jag:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 .......

Datatypen r int men den verkar sortera med string eller nt anat..
Citera
2007-01-22, 23:18
  #5
Medlem
StefanHeterJags avatar
Citat:
Ursprungligen postat av zman
Det jag skrev dr r sorterat.. men 2,3 kommer efter 19..

Fr vl skriva ut allt d:

s sorterar den nu:
1 10 11 12 13 14 15 16 17 18 19 2 20 21 22 23 24 25 26 27 28 29 3 30 31 ......

s hr vill jag:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 .......

Datatypen r int men den verkar sortera med string eller nt anat..
Ja, den verkar uppenbarligen sortera p string.
En (dum) workaround r ju att lgga till de insignifikanta nollorna s att det str 01,02,03,04,05,06,07,08,09,10,11,12,13... S kommer den sortera rtt.

Men det r ju sjlvklart bttre att ta reda p varfr den sorterar p string istllet fr int.. Och fr att kunna hjlpa dig med det underlttar det om du visar din kod som du anvnder fr sortering.
Peace.
Citera
2007-01-30, 14:39
  #6
Medlem
Stig-Britts avatar
Citat:
Ursprungligen postat av StefanHeterJag
Ja, den verkar uppenbarligen sortera p string.
En (dum) workaround r ju att lgga till de insignifikanta nollorna s att det str 01,02,03,04,05,06,07,08,09,10,11,12,13... S kommer den sortera rtt.

Men det r ju sjlvklart bttre att ta reda p varfr den sorterar p string istllet fr int.. Och fr att kunna hjlpa dig med det underlttar det om du visar din kod som du anvnder fr sortering.
Peace.

Hur ska han kunna "lgga till nollorna"? Det frutstter ju att han faktiskt arbetar med strngar, vilket skulle medfra att ditt inlgg blir vldigt motsgelsefullt. Som du ppekar blir det dock svrt att sga vad som r FEL utan att se trdstartarens kod.

RTT stt att gra det p r att lgga alla tal du vill sortera i en List<int> (minns inte om ven array har std fr automatisk sortering) och sedan enkelt sortera med .Sort(). Internt anvnder sig .Sort() endast av </> (less-than/greater-than) vilket INTE sorterar 1, 10, 2 osv om du anvnder 'int' som datatyp. Om du dremot anvnder strngar s anvnder den sig av frsta bokstaven (och andra, i fall de frsta r lika.. och tredje, ifall... osv) fr att sortera, och 10 hamnar d fr 2. Ungefr som att 'ba' skulle hamna fr 'c', om du frstr hur jag menar.

Lycka till med kodandet.
Citera
2007-01-30, 15:57
  #7
Medlem
Ralph_Wiggums avatar
Om nu datatypen verkligen r av typen Int ska det rcka med

Array.Sort(myArray);

Fr att sortera myArray som man normalt frvntar sig. Om det inte funkar s mste det nog vara s att datatypen inte r av typen Int.
Citera
2007-01-30, 16:41
  #8
Medlem
men_vafans avatar
Du kanske kan visa lite hur din kod ser ut? Lter som ett ljlfel.
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in