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

  • BSA

    BSA

    9 NİSAN 2012
  • Peter Sharp

    Peter Sharp

    11 ŞUBAT 2013
  • SomeOne Pro

    SomeOne Pro

    25 EKİM 2013