java中对数组中的数据进行随机排序

Python013

java中对数组中的数据进行随机排序,第1张

数组进行随机排序分为两种形式,一种是完全随机排序,一种是不完全随机排序,区别是完全随机对数组中原先任意的数据不会出现在原来的位置上,那么,一般来说,完全随机排序的需求会相对较大,我在此先给出完全随机方式,如果你需要不完全随机排序,可以再说:

举个例子:有一批数据,共n个,依次为a1,a2,a3,…,an-1,an,需要对它们进行完全随机排序。排序方法类似于直接选择,从左至右,即从ai+1~an中随机抽取一个数据与ai交换(1≤i≤n-1)。先排序第一个数据a1:从a2~an中随机抽出一个数据与a1交换;再排第二个数据a2:从a3~an中随机抽取一个数据与a2交换;再排第三个数据a3:从a4~an中随机抽取一个数据与a3交换;…;最后排第n-1个数据an-1:从an~an中随机抽取一个数据与an-1交换;第n个数据已不需要排序。这样,总共需要排n-1次。 从以上的算法分析中可以看出,每个待排序数据都会与其它数据交换位置,所以,每个数据都不会出现在原先的位置上,这是完全随机排序。

List l=new ArrayList(

input)

//将input数组放入arraylist,input为集合

List res=new ArrayList()

//用来存放随机产生元素的结果

Random r=new Random()//随机数

int size=l.size()

for(int i=0i<sizei++){

res.add(l.remove(

r.nextInt(l.size())))

//为了保证不重复,每次随机产生后都删除该元素。

}

//此时res中存放的就是随机排序的结果。

//在java中 如何随机排列几个数字

/**

* 对给定数目的自0开始步长为1的数字序列进行乱序

* @param no 给定数目

* @return 乱序后的数组

*/

public static int[] getSequence(int no) {

int[] sequence = new int[no]

for(int i = 0i <noi++){

sequence[i] = i

}

Random random = new Random()

for(int i = 0i <noi++){

int p = random.nextInt(no)

int tmp = sequence[i]

sequence[i] = sequence[p]

sequence[p] = tmp

}

random = null

return sequence

}

public static void main(String[] args) {

int[] num = getSequence(10)

for (int i = 0i <num.lengthi++) {

System.out.println(num[i])

}

}