SORU
17 Aralık 2008, ÇARŞAMBA


En verimli rastgele bir şekilde "tür" (Karışık) C tamsayılar listesi#

Ben rastgele 'sıralama' en verimli şekilde mümkün. tamsayılar (0-1999) listesi lazım Herhangi bir fikir?

Şu anda, böyle bir şey yapıyorum:

bool[] bIndexSet = new bool[iItemCount];

for (int iCurIndex = 0; iCurIndex < iItemCount; iCurIndex  )
{
    int iSwapIndex = random.Next(iItemCount);
    if (!bIndexSet[iSwapIndex] && iSwapIndex != iCurIndex)
    {
        int iTemp = values[iSwapIndex];
        values[iSwapIndex] = values[iCurIndex];
        values[iCurIndex] = values[iSwapIndex];
        bIndexSet[iCurIndex] = true;
        bIndexSet[iSwapIndex] = true;
    }
}

CEVAP
17 Aralık 2008, ÇARŞAMBA


Lineer zamanı iyi karıştırma algoritması Fisher-Yates shuffle.

Önerilen algoritma ile bulabilirsiniz bir sorun shuffle sonu yakın gibi, döngü çok zaman henüz takas edilmiş, rastgele seçilen elemanları arıyor. Bu takas için son öğe bir kere belirsiz bir süre alabilir.

Ayrıca, algoritma asla eğer sıralamak için öğeleri tek bir sayı varsa iptal olacak gibi görünüyor.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jared Busch

    Jared Busch

    25 Mayıs 2011
  • MADFINGER Games a.s.

    MADFINGER Ga

    21 NİSAN 2009
  • TokShogun

    TokShogun

    6 HAZİRAN 2009