当前位置 博文首页 > java数组随机排序实现代码_氢氟酸-金鱼柒的博客:java 随机排序

    java数组随机排序实现代码_氢氟酸-金鱼柒的博客:java 随机排序

    作者:[db:作者] 时间:2021-08-01 20:58

    例一

    代码如下 复制代码

    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

    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

    {

    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

    {

    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

    {

    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

    cs