數組的隨機打亂


數組的隨機打亂

本篇隨筆介紹一下一個小技巧:數組的隨機打亂。

有兩種方式,第一種是用STL里的random_shuffle函數,第二種是手寫。

第一種:STL

就是介紹一下random_shuffle函數的用法。

傳兩個參數,表示數組的首尾元素即可。

random_shuffle(a+1,a+n+1);//打亂a數組(1-n)。

第二種:手寫

手寫函數比較簡單,但是思想挺巧妙的,是一種隨機化算法。

直接放代碼,大家應該看就能看明白。

int main()
{
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        scanf("%d",&a[i]);
    for(int i=1;i<=n;i++)
        swap(a[i],a[(rand()%i)+1]);
}

差不多就這些。別怪我水博。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM