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
java数组随机排序实现代码的更多相关文章
- 万字长文带你掌握Java数组与排序,代码实现原理都帮你搞明白!
查找元素索引位置 基本查找 根据数组元素找出该元素第一次在数组中出现的索引 public class TestArray1 { public static void main(String[] arg ...
- 关于JavaScript的数组随机排序
昨天了解了一下Fisher–Yates shuffle费雪耶兹随机置乱算法,现在再来看看下面这个曾经网上常见的一个写法: function shuffle(arr) { arr.sort(functi ...
- JS数组随机排序
var arr=[1,2,3,4,5]; arr.sort(function(a,b){ var v=Math.random()>0.5?1:-1; console.log(a,b,v); re ...
- js 数组随机排序
仅用于个人学习记录 javascript 数组随机排序1.最简洁的方法:function randomsort(a, b) { return Math.random()>.5 ? -1 : ...
- 比较两种数组随机排序方法的效率 JavaScript版
//比较2中数组随机排序方法的效率 JavaScript版 //randon1思路 //当len=5时候,从0-5中随机3一个放入i=0, // 从0-3随机一个2放入i=2 // 从0-2随机一个1 ...
- Java数组的排序算法
在Java中,实现数组的排序算法有很多,如冒泡排序法.选择排序法.直接插入法和快速排序法等.下面介绍几种排序算法的具体 实现. 本文引用文献:Java必须知道的300个问题. 1.冒泡排序法 1.1 ...
- Java数组 —— 八大排序
(请观看本人博文--<详解 普通数组 -- Arrays类 与 浅克隆>) 在本人<数据结构与算法>专栏的讲解中,本人讲解了如何去实现数组的八大排序. 但是,在讲解的过程中,我 ...
- 【JavaScript】数组随机排序 之 Fisher–Yates 洗牌算法
Fisher–Yates随机置乱算法也被称做高纳德置乱算法,通俗说就是生成一个有限集合的随机排列.Fisher-Yates随机置乱算法是无偏的,所以每个排列都是等可能的,当前使用的Fisher-Yat ...
- Java ——数组 选择排序 冒泡排序
本节重点思维导图 数组 public static void main(String[] args) { int a ; a=3; int[] b; b = new int[3];//强制开辟内存空间 ...
随机推荐
- 【转】Java抽象类与接口的区别
很多常见的面试题都会出诸如抽象类和接口有什么区别,什么情况下会使用抽象类和什么情况你会使用接口这样的问题.本文我们将仔细讨论这些话题. 在讨论它们之间的不同点之前,我们先看看抽象类.接口各自的特性. ...
- ionic3报Please provide a valid ISO 8601 datetime format的错误
对于ionic的ion-datetime控件,初始化值的时候,如果指定为new Date()的话,会提示Please provide a valid ISO 8601 datetime format ...
- 微信小程序开发-滑动操作
在实际应用中,当某种手势被触发后,在用户没有放开鼠标或手指前,会一直识别为该手势.比如当用户触发左滑手势后,这时再向下滑动,仍要按照左滑手势来处理. 可以定义一个标记来记录第一次识别到的手势,如果已识 ...
- LintCode: Number of Airplanes in the Sky
C++ (1)把interval数组中的所有start和所有end放在同一个数组中,然后进行排序,遇到start就起飞一架飞机,遇到一架end就降落一架飞机,所以start有个+1属性,end有个-1 ...
- bash和shell的关系
bash是borne again shell的缩写,它是shell的一种,Linux上默认采用的是bash. shell脚本中的方法带不带function的区别,例如: function foo () ...
- vmware产品框架-计算中心,5.1更新等
概述:SRM,5.1新特性,vCenter Operations的介绍等 5.1改进参见:http://wenku.baidu.com/view/26530362a98271fe910ef961.ht ...
- Unbuntu和Centos中部署同时多版本PHP的详细过程
镜像制作:Unbuntu14 部署LAMP过程 1.Azure经典版中创建源Ubuntu14,并使用Xshell连接,并切换到root帐户下. 2.安装php5.4,新建/var/local/ ...
- 【转发】PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库
转发自:http://blog.csdn.net/lccee/article/details/54289076 课前小知识普及:MSSQL和SQL Server是同一个软件,叫法不同而已,MSSQL全 ...
- Java的静态成员类
Java的静态成员类: 1.静态成员类是最简单的嵌套类.最好把它看成一个普通的类,只是碰巧被声明在另一个类的内部而已,它可以访问外围类的所以成员,包括那些声明为私有的成员. 2.静态成员类是外围类的一 ...
- 【AIX】在命令前显示完整路径
登录到AIX系统,发现在#前没有目录展示,这样我们在查看当前目前时很不方便,需要借助命令PWD才可以实现 解决方案: 在.profile文件中添加命令:export PS1="[LONGNA ...