|
作者: Great Eagle 問題 小E最近在設(shè)計(jì)一款斗地主小游戲,為了保證發(fā)到玩家手中的牌具有隨機(jī)性,小E必須對(duì)現(xiàn)實(shí)世界中的洗牌過程進(jìn)行模擬??此坪?jiǎn)單的一個(gè)問題,卻難住了小E。 于是,小E向老師請(qǐng)教。 思路
點(diǎn)評(píng):上面即為洗牌算法的思想,其本質(zhì)是對(duì)數(shù)組元素進(jìn)行隨機(jī)重排。數(shù)組中每個(gè)元素經(jīng)過洗牌算法后落在數(shù)組某個(gè)位置上的概率是相等的,洗牌算法在牌類游戲中非常有用。我們最終將算法的時(shí)間復(fù)雜度優(yōu)化到了O(n),空間復(fù)雜度優(yōu)化到了O(1)。 代碼實(shí)現(xiàn) 下面是作者用JavaScript實(shí)現(xiàn)的代碼,僅供參考?。ńㄗh大家自己動(dòng)手實(shí)現(xiàn)一遍) //對(duì)數(shù)組中的元素進(jìn)行隨機(jī)重新排列,并返回溫馨提示:可左右滑動(dòng) 復(fù)制代碼請(qǐng)前往https://blog.csdn.net/Great_Eagle/article/details/84839932 |
|
|