`
eriol
  • 浏览: 402391 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

洗牌算法

阅读更多

 

问题描述:给出洗牌的一个算法,并将洗好的牌存储在一个整形数组里。

算法思想:原地排列给定的数列,在第i次迭代时,元素A[i]是从A[i]到A[n]中随机选取的,第i次迭代后,A[i]保持不变。时间复杂度为O(n)。该程序将会产生n*(n-1)*(n-2)*...*1种等可能的情况,它们正好与1至n的n!种排列一一对应。

 

 

void shuffle(int[] a) {
    int n = a.length;
    for (int i = 1; i <= n; i++) {
        swap(a[i], a[random(i, n)]);
    }
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics