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

  • Jose LviS el Bambino ( JLB )   LviSito

    Jose LviS el

    3 ŞUBAT 2008
  • friendz.net

    friendz.net

    29 EKİM 2010
  • Virtual Riot

    Virtual Riot

    19 Mayıs 2011