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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值