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

  • ipsy

    ipsy

    1 EKİM 2012
  • LounaTutorials

    LounaTutoria

    10 EYLÜL 2009
  • ODN

    ODN

    26 Kasım 2006