Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Kami Boleh Mengocok Senarai Integer dengan Cekap dalam C#?

Bagaimanakah Kami Boleh Mengocok Senarai Integer dengan Cekap dalam C#?

DDD
Lepaskan: 2025-01-21 14:02:14
asal
898 orang telah melayarinya

How Can We Efficiently Shuffle an Integer List in C#?

Algoritma pengisihan rawak yang cekap untuk senarai integer C#

Artikel ini meneroka cara yang lebih cekap untuk mengisih atau merombak senarai integer secara rawak.

Algoritma Kocok Fisher-Yates

Algoritma shuffling Fisher-Yates ialah algoritma masa linear yang merawak senarai dengan cekap. Begini cara ia berfungsi:

Untuk setiap indeks i dalam senarai dari 0 hingga n-1, lakukan perkara berikut:

<code>int j = random.Next(i + 1);
交换索引i和j处的数值;</code>
Salin selepas log masuk

Tingkatkan masalah sedia ada dalam algoritma

Algoritma yang dicadangkan mempunyai beberapa kelemahan:

  • Ketidakcekapan pada penghujung: Seiring dengan kemajuan algoritma, ia menjadi semakin sukar untuk mencari elemen yang tidak ditukar, yang membawa kepada ketidakcekapan.
  • Gelung tak terhingga: Apabila bilangan elemen ialah nombor ganjil, algoritma tidak akan ditamatkan kerana ia tidak dapat mencari calon pertukaran yang sesuai.

Pelaksanaan kod

Coretan kod berikut melaksanakan algoritma shuffling Fisher-Yates dalam C#:

<code class="language-csharp">using System;
using System.Collections.Generic;

class Program
{
    static void Shuffle<T>(IList<T> list)
    {
        Random random = new Random();

        for (int i = 0; i < list.Count; i++)
        {
            int j = random.Next(i + 1);
            T temp = list[i];
            list[i] = list[j];
            list[j] = temp;
        }
    }

    static void Main(string[] args)
    {
        List<int> values = new List<int>();
        for (int i = 0; i < 10; i++)
        {
            values.Add(i);
        }

        Shuffle(values);

        Console.WriteLine(string.Join(", ", values));
    }
}</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Kami Boleh Mengocok Senarai Integer dengan Cekap dalam C#?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan