C# ----- 算法之洗牌算法


作为一名学数学的渣渣,其实对各种算法还是有兴趣的。有时候看到某位大神写的精妙的算法真真是比一场演唱会都精彩~~

洗牌算法常用于像是连连看,爱消除这种小游戏。目的就在于打乱既定顺序。

我目前喜欢并觉得效率高易理解的洗牌算法有两种实现方式。下面一一陈述。

本博在csdn看到某位大神写的,随手摘抄了。

第一种是用取余的方法随机取值

 private void random1(int[] array,int length)
          {
               int index;
               int value;
               int wangsai;

               if (array == null || length == 0)
               {
                    return;
               }

               for (index = 0; index < length; index++)
               {
                    // 随机数是为了取余
                    value = index + new Random().Next(0,10000000)%(length - index);

                    median = array[index];
                    array[index] = array[value];
                    array[value] = wangsai;
               }
          }

第二种方法是取随机索引值

   private void random2(int[] array,int length)
          {
               int index;
               int value;
               for (int i = length - 1; i > 0; i--)
               {
                    index = new Random().Next(0,i+1);

                    value = array[i];
                    array[i] = array[index];
                    array[index] = value;
               }
          }

具体实现方案:

public static void Main (string[] args)
          {
               int[] numbers = new int[54];
               int length = numbers.Length;
               for (int i = 0; i < length; i++)
               {
                    numbers[i] = i + 1;
               }
               MainClass m = new MainClass ();
               m.random1 (numbers, length);
               foreach (int i in numbers)
               {
                    Console.Write(i + " ");
               }
               Console.WriteLine ("**********************");

               m.random2 (numbers, length);
               foreach (int i in numbers)
               {
                    Console.Write(i + " ");
               }

困困困饿饿饿。。。不码字了!!

优质内容筛选与推荐>>
1、专职DBA-MySQL主从异步复制
2、pandas的排序、排名函数——sort_index()、sort_values()、rank()
3、世界的层次、概念的粒度
4、.Net Core 常用开发工具(IDE和运行时、Visual Studio插件、Visual Studio Code插件)
5、git怎么创建本地版本仓库


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn