Rumah >pembangunan bahagian belakang >C++ >Adakah menggunakan `rawak` dan` Orderby` cara yang cekap untuk mengosongkan senarai?
Gunakan
dan senarai shuffle: Adakah ia algoritma yang cekap? Random
OrderBy
Artikel ini membincangkan sama ada penggunaan dan
Random
kaedah OrderBy
Kod yang diberikan untuk menghasilkan nombor rawak untuk setiap elemen, dan meneruskan senarai berdasarkan nombor ini:
penilaian
<code>var r = new Random(); var shuffled = ordered.OrderBy(x => r.Next());</code>Walaupun kaedah ini kelihatan sangat intuitif, ia mempunyai beberapa kekurangan:
Kerumitan pengkomputeran:
kerumitan masa adalah O (n log n), yang tidak cekap untuk senarai besar. Algoritma shuffle yang lebih baik mempunyai kerumitan O (n).Masalah yang berpotensi:
Kaedah pengembangan ini memudahkan penggunaan shuffle Fisher-Yates dan mengelakkan keperluan menghasilkan tatasusunan baru.
Kesimpulan
dan boleh digunakan untuk shuffling, tetapi mereka mempunyai masalah kecekapan dan sisihan. Fisher-Yates Shuffle menyediakan penyelesaian yang lebih cekap dan tidak menyedihkan, yang merupakan pilihan pertama dalam kebanyakan aplikasi yang perlu digerakkan.
Atas ialah kandungan terperinci Adakah menggunakan `rawak` dan` Orderby` cara yang cekap untuk mengosongkan senarai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!