Rumah > pembangunan bahagian belakang > C++ > Pengisihan C#: Isih lwn. OrderBy: Bilakah Saya Perlu Menggunakan Yang Mana?

Pengisihan C#: Isih lwn. OrderBy: Bilakah Saya Perlu Menggunakan Yang Mana?

Barbara Streisand
Lepaskan: 2024-12-30 02:05:09
asal
985 orang telah melayarinya

C# Sorting: Sort vs. OrderBy: When Should I Use Which?

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"));
Salin selepas log masuk

Menggunakan Isih, kita boleh mengisih senarai mengikut nama:

persons.Sort((p1, p2) => string.Compare(p1.Name, p2.Name, true));
Salin selepas log masuk

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);
    }
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan