Fråga angående C# och sortering

Permalänk
Medlem

Fråga angående C# och sortering

Hej

Nu när jag sitter o övar och lär mig själv C# i fritiden så kom jag över något som kallas Sökning och Sortering...Jag undrar bra vad detta är, och hur man går till väga för att tillexempel sortera en kod.

Jag har skapat en enkelt spel, Snake, som console app..och ska sortera de tänkte jag..Hur går man till väga?

Permalänk
Medlem
Skrivet av Hagge:

Jag har skapat en enkelt spel, Snake, som console app..och ska sortera de tänkte jag..Hur går man till väga?

*Vad* är det du vill sortera? En highscorelista?

Permalänk
Medlem

"sortera en kod"
En vanlig sortering är att du placerar fälten högst upp i filen och sedan konstruktorerna och sedan funktioner

Permalänk
Medlem
Skrivet av iXam:

*Vad* är det du vill sortera? En highscorelista?

Nä inte direkt en highscore lista

Skrivet av Megamannens:

"sortera en kod"
En vanlig sortering är att du placerar fälten högst upp i filen och sedan konstruktorerna och sedan funktioner

Jo, tror de är mer åt de hållet jag tänkte på när jag läste lite om sortering...men vad är poängen med de? Att koden ska bli mer lättläst?
Ifall jag länkar en del av koden, kan ni ge exempel på en sortering?

Permalänk
Medlem
Skrivet av Hagge:

Jo, tror de är mer åt de hållet jag tänkte på när jag läste lite om sortering...men vad är poängen med de? Att koden ska bli mer lättläst?
Ifall jag länkar en del av koden, kan ni ge exempel på en sortering?

Är det "Code refactoring" du tänker på? (https://en.wikipedia.org/wiki/Code_refactoring)

Permalänk
Medlem

Jag gissar att TS bara hört talas "sortering" nämnas i samband med programmering och vill lära sig vad det är och hur man gör det...

Att refakturera eller sortera fält/metoder/konstruktorer är inget man normalt menar när man pratar om sortering. I 99% av fallen skulle jag påstå att man vill sortera en ordnad datamängd med hjälp av antingen en algoritm eller en inbyggd metod.

Permalänk
Medlem
Skrivet av Hagge:

Jo, tror de är mer åt de hållet jag tänkte på när jag läste lite om sortering...men vad är poängen med de? Att koden ska bli mer lättläst?
Ifall jag länkar en del av koden, kan ni ge exempel på en sortering?

Om det är "refactoring" (omformatering) av kod du åsyftar på så är det för att det skall bli lättare att läsa och följa koden ja.

dvs, om du skall deklarera en variabel för en klass så är det rimligt att placera den deklarationen högst upp i klassen.

Se koden i spoiler taggen för ett exempel...

using System; using System.Collections.Generic; namespace PersonTest { class Program { static void Main(string[] args) { List<Person> family = new List<Person>(); // Create family firstname lastname age weight(kg) height(cm) family.Add(new Person( "Fralia", "Hansson", 44, 76.2f, 168.4f )); // Married to Murphy but keeping her last name. family.Add(new Person( "Murphy", "Smith", 48, 92.6f, 185.3f )); family.Add(new Person( "Frank", "Wesson", 20, 65.8f, 180.1f )); // Married taking another last name. family.Add(new Person( "Elisa", "Smith", 19, 70.5f, 176.2f )); family.Add(new Person( "Mark", "Smith", 12, 58.3f, 129.4f )); family.Add(new Person( "Hank", "Smith", 10, 49.9f, 124.6f )); family.Add(new Person( "Linda", "Smith", 6, 41.7f, 85.8f )); // Sort family by firstname. Console.WriteLine("Sorted by first name:"); family.Sort((Person a, Person b) => a.FirstName.CompareTo(b.FirstName)); ListFamily(family); // Sort family by lastname. Console.WriteLine("Sorted by last name:"); family.Sort((Person a, Person b) => a.LastName.CompareTo(b.LastName)); ListFamily(family); // Sort family by age. Console.WriteLine("Sorted by age:"); family.Sort((Person a, Person b) => a.Age.CompareTo(b.Age)); ListFamily(family); // Sort family by age descending. Console.WriteLine("Sorted by age (descending):"); family.Sort((Person a, Person b) => -a.Age.CompareTo(b.Age)); ListFamily(family); Console.WriteLine(); Console.WriteLine("Press any key to continue!"); Console.ReadKey(); } static void ListFamily(List<Person> family) { Console.WriteLine("{0,-25}{1,-5}{2, -8}{3}", "Name", "Age", "Height", "Weight"); foreach (Person person in family) Console.WriteLine(person.ToString()); Console.WriteLine(); } } class Person : IComparable { private string firstName; private string lastName; private int age; private float height; // In cm. private float weight; // In kg. // ... More variable declarations. public string FirstName { get { return firstName; } } public string LastName { get { return lastName; } } public int Age { get { return age; } } public float Height { get { return height; } } public float Weight { get { return weight; } } public string FullName { get { return string.Join(" ", firstName, lastName); } } // Constructor public Person(string firstName, string lastName, int age, float weight, float height) { this.firstName = firstName; this.lastName = lastName; this.age = age; this.height = height; this.weight = weight; } // Will increase the persons age by one. public void HaveABirthday() { age++; } // Custom formatted spaced string describing this person. public override string ToString() { return String.Format("{0,-25}{1,-5}{2, -8}{3}", FullName, Age, Height, Weight); } // Compare one person to another, we sort by fullname. // If the "person" we compare to isn't actually a person we sort our person before the invalid person. public int CompareTo(object person) { if (person.GetType() != typeof(Person)) return -1; return FullName.CompareTo(((Person)person).FullName); } // Compare function, in this case we compare the two provided objects to eachother instead of each person to person class. public int CompareTo(IComparable a, IComparable b) { return a.CompareTo(b); } } }

Dold text

Ordningen som jag följer är:

  1. privata deklarationer.

  2. publika deklarationer

  3. publika properties (egenskaper)

  4. konstruktör

  5. Eventuell destruktör

  6. Eventuell Dispose() metod

  7. Metoder

I samma kod får du ett exempel på hur man sorterar en lista.

Visa signatur

Chassi: Svart, PSU: 230 volt, Moderkort: Stort, CPU: Med fläkt, Minne: Tappat, GPU: Klarar MsPaint jättebra, Hårddiskar: Stor och liten, Mus: Med rullhjul, Tangentbord: Svenskt, Skärm: Platt

Permalänk
Medlem
Skrivet av iXam:

Är det "Code refactoring" du tänker på? (https://en.wikipedia.org/wiki/Code_refactoring)

Skrivet av MrMadMan:

Jag gissar att TS bara hört talas "sortering" nämnas i samband med programmering och vill lära sig vad det är och hur man gör det...

Att refakturera eller sortera fält/metoder/konstruktorer är inget man normalt menar när man pratar om sortering. I 99% av fallen skulle jag påstå att man vill sortera en ordnad datamängd med hjälp av antingen en algoritm eller en inbyggd metod.

Skrivet av TheCadde:

Om det är "refactoring" (omformatering) av kod du åsyftar på så är det för att det skall bli lättare att läsa och följa koden ja.

dvs, om du skall deklarera en variabel för en klass så är det rimligt att placera den deklarationen högst upp i klassen.

Se koden i spoiler taggen för ett exempel...

using System; using System.Collections.Generic; namespace PersonTest { class Program { static void Main(string[] args) { List<Person> family = new List<Person>(); // Create family firstname lastname age weight(kg) height(cm) family.Add(new Person( "Fralia", "Hansson", 44, 76.2f, 168.4f )); // Married to Murphy but keeping her last name. family.Add(new Person( "Murphy", "Smith", 48, 92.6f, 185.3f )); family.Add(new Person( "Frank", "Wesson", 20, 65.8f, 180.1f )); // Married taking another last name. family.Add(new Person( "Elisa", "Smith", 19, 70.5f, 176.2f )); family.Add(new Person( "Mark", "Smith", 12, 58.3f, 129.4f )); family.Add(new Person( "Hank", "Smith", 10, 49.9f, 124.6f )); family.Add(new Person( "Linda", "Smith", 6, 41.7f, 85.8f )); // Sort family by firstname. Console.WriteLine("Sorted by first name:"); family.Sort((Person a, Person b) => a.FirstName.CompareTo(b.FirstName)); ListFamily(family); // Sort family by lastname. Console.WriteLine("Sorted by last name:"); family.Sort((Person a, Person b) => a.LastName.CompareTo(b.LastName)); ListFamily(family); // Sort family by age. Console.WriteLine("Sorted by age:"); family.Sort((Person a, Person b) => a.Age.CompareTo(b.Age)); ListFamily(family); // Sort family by age descending. Console.WriteLine("Sorted by age (descending):"); family.Sort((Person a, Person b) => -a.Age.CompareTo(b.Age)); ListFamily(family); Console.WriteLine(); Console.WriteLine("Press any key to continue!"); Console.ReadKey(); } static void ListFamily(List<Person> family) { Console.WriteLine("{0,-25}{1,-5}{2, -8}{3}", "Name", "Age", "Height", "Weight"); foreach (Person person in family) Console.WriteLine(person.ToString()); Console.WriteLine(); } } class Person : IComparable { private string firstName; private string lastName; private int age; private float height; // In cm. private float weight; // In kg. // ... More variable declarations. public string FirstName { get { return firstName; } } public string LastName { get { return lastName; } } public int Age { get { return age; } } public float Height { get { return height; } } public float Weight { get { return weight; } } public string FullName { get { return string.Join(" ", firstName, lastName); } } // Constructor public Person(string firstName, string lastName, int age, float weight, float height) { this.firstName = firstName; this.lastName = lastName; this.age = age; this.height = height; this.weight = weight; } // Will increase the persons age by one. public void HaveABirthday() { age++; } // Custom formatted spaced string describing this person. public override string ToString() { return String.Format("{0,-25}{1,-5}{2, -8}{3}", FullName, Age, Height, Weight); } // Compare one person to another, we sort by fullname. // If the "person" we compare to isn't actually a person we sort our person before the invalid person. public int CompareTo(object person) { if (person.GetType() != typeof(Person)) return -1; return FullName.CompareTo(((Person)person).FullName); } // Compare function, in this case we compare the two provided objects to eachother instead of each person to person class. public int CompareTo(IComparable a, IComparable b) { return a.CompareTo(b); } } }

Dold text

Ordningen som jag följer är:

  1. privata deklarationer.

  2. publika deklarationer

  3. publika properties (egenskaper)

  4. konstruktör

  5. Eventuell destruktör

  6. Eventuell Dispose() metod

  7. Metoder

I samma kod får du ett exempel på hur man sorterar en lista.

Tack för alla svar:) Ska kolla genom och återkomma ifall jag lär mig något:)
Och som sagt tidigare av MrMadMan, jag kom över ordet sortering och vill lära mig de:)