zoukankan      html  css  js  c++  java
  • java数组随机排序实现代码

    例一

    代码如下 复制代码
    import java.lang.Math;
    import java.util.Scanner;
    class AarrayReverse
    {
    public static void main(String args[])
    {
    int a[]=new int[20];
    for(int i=0;i<=15;i++)
    {
    Scanner sca=new Scanner(System.in);
    System.out.println("请输数组元素a["+"]");
    a[i]=sca.nextInt();
    }
    for(int i=0;i<=100;i++)
    {
    int middle=(int)(a.length/2*Math.random());
    int radius=(int)(middle*Math.random());
    int t;
    t=a[middle-radius+1];
    a[middle-radius+1]=a[middle+radius+3];
    a[middle+radius+3]=t;
    }
    for(int i=0;i<a.length;i++)
    System.out.print(a[i]+" ");
    System.out.println();
    }
    }

    当然这里的数组可以自己定义.
    循环的次数越多越好..

    例二

    代码如下 复制代码
    import java.util.Date;
    import java.util.Random;
    /*
    * 随即排列数组,给定一个数组,随即排列其中的元素,目前主要有两种方法
    */
    public class RandomSort {

    public static void main(String args[]){
    int data[]=new int[]{1,42,51,62,8,94,23,13,40,5};
    //int p[]=getRandom(1,-8,100);
    //show(p);
    show(data);
    permuteBySort(data);
    show(data);
    randomizeInPlace(data);
    show(data);
    }

    /*
    * 随机排列数组,使用优先级方式,每个数组元素A[i] 对应一个优先级P[i],
    * 然后依据优先级对数组进行排序
    */
    private static void permuteBySort(int[] data)
    {
    int l(www.111cn.net)en=data.length;
    int len3=len*len*len;
    int P[]=getRandom(1,len3,len);

    //冒泡排序
    for(int i=len-1; i>0; i--)
    {
    for(int j=0; j<i ; j++)
    {
    if(P[j]>P[j+1])
    {
    int temp=data[j];
    data[j]=data[j+1];
    data[j+1]=temp;

    temp=P[j];
    P[j]=P[j+1];
    P[j+1]=temp;
    }
    }
    }
    }
    /*
    * 元素A[i]是从 元素A[i]到A[n]中随机选取的
    */
    private static void randomizeInPlace(int[] data)
    {
    Date dt=new Date();
    Random random=new Random(dt.getSeconds());
    int len=data.length;
    for(int i=0; i<len; i++)
    {
    int pos=(int)(random.nextDouble()*(len-i+1)+i)-1;
    int temp=data[i];
    data[i]=data[pos];
    data[pos]=temp;
    }
    }

    /*
    * 获得在a到b之间的n个随机数
    */
    private static int[] getRandom(int a,int b,int n)
    {
    if(a>b)
    {
    int temp=a;
    a=b;
    b=temp;
    }

    Date dt=new Date();
    Random random=new Random(dt.getSeconds());
    int res[]=new int[n];
    for(int i=0; i<n; i++)
    {
    res[i]=(int)(random.nextDouble()*(Math.abs(b-a)+1))+a;
    }
    return res;
    }


    private static void show(int[] data)
    {
    System.out.println("========================");
    for(int i = 0; i < data.length; i++)
    {
    System.out.print(data[i] + " ");
    }
    System.out.println();
    System.out.println("========================");
    }
    }

    from:http://www.111cn.net/jsp/Java/40825.htm

  • 相关阅读:
    URL中增加BASE64加密的字符串引起的问题(java.net.MalformedURLException:Illegal character in URL)
    读《暗时间》总结
    假设写一个android桌面滑动切换屏幕的控件(一)
    JDBC Connection Reset问题分析
    深度学习工具caffe具体安装指南
    TS2
    TS 函数解析
    typescript
    响应式网页设计:rem、em设置网页字体大小自适应
    一看就懂得移动端rem布局、rem如何换算
  • 原文地址:https://www.cnblogs.com/alibai/p/4019762.html
Copyright © 2011-2022 走看看