Fisher-Yates洗牌算法

Fisher-Yates洗牌算法

用处: 在游戏进行洗牌的均匀打乱操作时

算法代码:

for (int i = shuffledList.Count - 1; i >= 1; i--)
        {
            int j = Random.Range(0, i + 1);

            PerCard temp = shuffledList[j];
            shuffledList[j] = shuffledList[i];
            shuffledList[i] = temp;
        }

算法思路:
固定从某一端开始,每次从后面所有元素中抽取一个并与某一端从第一位开始的元素交换,直至最后一位为止

时间复杂度:O(n)
空间复杂度:O(1)

posted @ 2024-04-01 22:52  KSAH  阅读(59)  评论(0)    收藏  举报