洗牌算法

原创 2015年11月20日 17:04:36

适用情况 : 得到一个乱序的数组

public class ShuffleSortTest {  

    
    public static void main(String[] args) {  
        int[] data = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};  
        print(data);  
        shuffleSort(data);  
        System.out.println("排序后的数组:");  
        print(data);  
    }  
 
    public static void swap(int[] data, int i, int j) {  
        if (i == j) {  
            return;  
        }  
        data[i] = data[i] + data[j];  
        data[j] = data[i] - data[j];  
        data[i] = data[i] - data[j];  
    }  
 
    public static void shuffleSort(int[] data) {  
        for (int i = 0; i < data.length - 1; i++) {  
            int j = (int) (data.length * Math.random());  
            swap(data, i, j);  
        }  
    }  
 
    public static void print(int[] data) {  
        for (int i = 0; i < data.length; i++) {  
            System.out.print(data[i] + "\t");  
        }  
        System.out.println();  
    }  



结果:

0    1    2    3    4    5    6    7    8    9    
排序后的数组:
2    8    1    4    6    0    5    9    7    3   


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

VBS洗牌算法

  • 2013-08-16 14:57
  • 584B
  • 下载

完美洗牌算法学习

完美洗牌问题,给定一个数组a1,a2,a3,...an,b1,b2,b3..bn,把它最终设置为b1,a1,b2,a2,...bn,an这样的。 分析:      首先,有的问题要求把它换...

A Simple In-Place Algorithm for In-Shuffle 一种简单的原地洗牌算法

只是把这篇文章前3部分翻译了,由于是学通信的,很多计算机术语可能翻译的不对,对文章内容理解偏差也可能会导致翻译错误,若发现,请指正,方便我更正!  1引文 通过把一副牌均分为两半,让后一半交错插...

随机洗牌算法

算法一:就是随机一个位置放入队列中的一个书,位置上已经有数则重新随机一个位置,直到队列空 算法(Java): public HashSet getRamdomNumber(int total,i...

洗牌算法

1.常见的洗牌算法  void shuffle_normal(int* array, const int length) { if (NULL == array || 0 >= length...

Collections 洗牌算法源码

如何打乱List 或 Array元素的顺序 打乱List或者Array数据元素的顺序,其实就是让集合中的元素变得随机,举个例子,有如下一个Array数据:  其中存储了 1, 2, 3, 4,...

洗牌算法 数组打乱顺序 Fisher-Yates shuffle

http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle 大公司面试题见过几次 今天实现以下 其实MODERN算法很简单 1. 实...

洗牌算法

原文地址:http://blog.csdn.net/feixiaoxing/article/details/6860339/ 扑克牌洗牌是我们生活中比较喜欢玩的一个游戏。那么我们有没有什么办...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)