java中对数组中的数据进行随机排序
发布网友
发布时间:2022-05-16 21:23
我来回答
共5个回答
热心网友
时间:2023-08-06 11:31
对数组进行随机排序分为两种形式,一种是完全随机排序,一种是不完全随机排序,区别是完全随机对数组中原先任意的数据不会出现在原来的位置上,那么,一般来说,完全随机排序的需求会相对较大,我在此先给出完全随机方式,如果你需要不完全随机排序,可以再说:
举个例子:有一批数据,共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次。 从以上的算法分析中可以看出,每个待排序数据都会与其它数据交换位置,所以,每个数据都不会出现在原先的位置上,这是完全随机排序。
热心网友
时间:2023-08-06 11:32
import java.util.Date;
import java.util.Random;
public class RandomSort {
public String[] doSort(String[] sArr){
String[] tempArr= new String[sArr.length];
Random random = new Random(new Date().getTime());
int randomIndex = -1;
for(int i=0;i<tempArr.length;i++){
while(tempArr[i] == null){
randomIndex = random.nextInt(sArr.length);
if(sArr[randomIndex] != null){
tempArr[i] = sArr[randomIndex];
sArr[randomIndex] = null;
}
}
}
return tempArr;
}
public static void main(String[] args) {
RandomSort sort = new RandomSort();
String[] argArr = {"1","2","3","4","5","6","7","8","9"};
String[] result = sort.doSort(argArr);
for(int i = 0;i<result.length;i++){
System.out.println(result[i]);
}
}
}
热心网友
时间:2023-08-06 11:32
这么有意思?随机排序?那还要排序干嘛?
热心网友
时间:2023-08-06 11:33
你说的是产生随机数然后排序吧?
热心网友
时间:2023-08-06 11:33
随机排序?追问随机排列