Isih C#: Isih lwn. OrderBy
Dalam C#, kami mempunyai berbilang pilihan untuk mengisih koleksi, termasuk Isih dan OrderBy. Artikel ini akan menyelidiki perbezaan antara kedua-dua kaedah ini dan algoritma masing-masing.
Isih
Kaedah Isih melakukan isihan di tempat menggunakan algoritma QuickSort. Ia adalah algoritma pengisihan yang tidak stabil, bermakna susunan elemen yang sama mungkin tidak dapat dikekalkan selepas pengisihan.
OrderBy
Kaedah OrderBy, sebaliknya, melaksanakan jenis stabil. Ini bermakna elemen yang sama mengekalkan susunan relatifnya selepas mengisih. OrderBy secara dalaman menggunakan algoritma isihan gabungan.
Perbandingan Prestasi
Prestasi Sort dan OrderBy berbeza-beza bergantung pada faktor seperti saiz koleksi, jenis elemen , dan kriteria pengisihan. Secara umum, Isih adalah lebih pantas untuk koleksi kecil atau apabila mengisih mengikut jenis data primitif. Walau bagaimanapun, untuk koleksi yang lebih besar atau kriteria pengisihan yang kompleks, OrderBy boleh menjadi lebih cekap kerana algoritma pengisihannya yang stabil.
Senario Penggunaan
Isih sesuai apabila anda perlu melakukan jenis di tempat dan tidak perlu mengekalkan susunan unsur yang sama. OrderBy adalah lebih baik apabila mengekalkan susunan elemen yang sama adalah penting atau apabila anda perlu melakukan operasi tambahan (seperti penapisan atau unjuran) selepas mengisih.
Contoh
Pertimbangkan contoh berikut:
List<Person> persons = new List<Person>(); persons.Add(new Person("P005", "Janson")); persons.Add(new Person("P002", "Aravind")); persons.Add(new Person("P007", "Kazhal"));
Menggunakan Isih, kita boleh mengisih senarai mengikut nama:
persons.Sort((p1, p2) => string.Compare(p1.Name, p2.Name, true));
Menggunakan OrderBy, kita boleh melakukan isihan stabil menggunakan pembanding tersuai:
var query = persons.OrderBy(n => n.Name, new NameComparer()); class NameComparer : IComparer<string> { public int Compare(string x, string y) { return string.Compare(x, y, true); } }
Dalam contoh ini, OrderBy adalah lebih sesuai kerana ia memastikan susunan yang sama nama terpelihara.
Atas ialah kandungan terperinci Pengisihan C#: Isih lwn. OrderBy: Bilakah Saya Perlu Menggunakan Yang Mana?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!