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

  • AndyMcMillinTV

    AndyMcMillin

    6 HAZİRAN 2007
  • boburnham

    boburnham

    11 Temmuz 2006
  • DancingIsAPassion

    DancingIsAPa

    29 AĞUSTOS 2009