2010-06-28 1 views
2

Je mettais en œuvre la recherche linéaire pour la recherche dans une collection puis je pensais pourquoi ne pas utiliser la recherche binaire, pour lequel j'ai dû utiliser le tri. Bien que je puisse les implémenter, mais j'aimerais savoir où ils existent dans .net lui-même. J'espère que ce sera présent dans .Net.Avons-nous la fonction de tri et de recherche dans .net

+0

ne faut pas oublier de voter cette quand j'ai plus de votes en retour. –

Répondre

2

.NET a un tri implémenté par défaut, mais si vous pouvez spécifier l'ordre dans lequel vous souhaitez trier vos éléments, vous ne pouvez pas spécifier l'algorithme avec lequel il trie.

En tant que tel, vous pourriez être intéressé par this article qui fournit le code .NET pour le tri abstrait, y compris les implémentations de toutes les principales méthodes de tri.

+1

L'article donné par vous semble être bon et très utile, commentera plus après la lecture et l'implémentation. –

3

De this répondre SO:

.NET utilise une variante de Quicksort (la médiane Sedgewick de 3 Quicksort).

4

Si je ne me trompe c'est quelque chose que vous recherchez

public class Person 
{ 
    public int age; 
    public string name; 

    public Person(int age, string name) 
    { 
     this.age = age; 
     this.name = name; 
    } 
} 


List<Person> people = new List<Person>(); 

people.Add(new Person(50, "Fred")); 
people.Add(new Person(30, "John")); 
people.Add(new Person(26, "Andrew")); 
people.Add(new Person(24, "Xavier")); 
people.Add(new Person(5, "Mark")); 
people.Add(new Person(6, "Cameron")); 

Pour la recherche

// with delegate 
    List<Person> young = people.FindAll(delegate(Person p) { return p.age < 25; }); 

    // with lammda 
    List<Person> young = people.FindAll(a=> a.age < 25); 

pour tri

// with delegate 
people.Sort(delegate(TestKlasse a, TestKlasse b) { return a.age.CompareTo(b.age); }); 

// with lambda function 
people.Sort((a, b) => a.age.CompareTo(b.age)); 
+0

Quelle est la fonction utilisée par CompareTo en interne? i.e trier algo? –

+0

Cela ne semble pas être ce qu'il cherche. Il est capable de chercher, mais veut contrôler l'algorithme de recherche. –

Questions connexes