import java.util.Arrays;
藍(lán)山網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),藍(lán)山網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為藍(lán)山數(shù)千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)營銷網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的藍(lán)山做網(wǎng)站的公司定做!
import java.util.Random;
import java.util.Scanner;
public class TestTest {
public static void main(String[] args) {
int arr[] = new int[11];
Random r=new Random();
for(int i=0;i10;i++){
arr[i]=r.nextInt(100)+1;//得到10個(gè)100以內(nèi)的整數(shù)
}
Arrays.sort(arr);
for(int i=0;iarr.length;i++){
System.out.print(arr[i]+"\t");
}
System.out.print("\nPlease Input a int number: ");
Scanner sc=new Scanner(System.in);
arr[10]=sc.nextInt();//輸入一個(gè)int值
Arrays.sort(arr);
for(int i=0;iarr.length;i++){
System.out.print(arr[i]+"\t");
}
}
}
上面寫的太復(fù)雜了。。。
給你寫個(gè)簡(jiǎn)單易懂的。。
已經(jīng)實(shí)現(xiàn)了LZ所要的功能。。
明了。。祝你好運(yùn)哈??!
package fxw.xjtu.edu;
import java.util.Iterator;
import java.util.Random;
import java.util.TreeSet;
public class TestTreeSet {
public static void main(String[] args) {
System.out.println("產(chǎn)生20個(gè)隨即數(shù):");
TreeSetInteger ts = new TreeSetInteger();
for(int i=0;i20;i++){
int a = new Random().nextInt();
System.out.println(a);
ts.add(a);
}
System.out.println("排序后的輸出為:");
IteratorInteger i = ts.iterator();
while(i.hasNext()){
System.out.println(i.next());
}
}
}
用TreeSet存儲(chǔ)產(chǎn)生的隨機(jī)數(shù),存完之后就已經(jīng)排好序了。
思路有兩個(gè)
1、利用Random.nextInt(n)得到處于0~n-1的隨機(jī)數(shù),加1后并按順序放入數(shù)組。放入之前需要先判斷數(shù)組中是否已經(jīng)有了該數(shù)。
2、先初始化數(shù)組a[n],存放1~n的整數(shù),然后交換任意兩個(gè)位置的數(shù)任意次數(shù),這也能得到隨機(jī)。交換次數(shù)定多少,這個(gè)我沒法確定。
我把第一種方法代碼貼出來
static Random r = new Random();
@Test
public void test() {
printArray(getArray(20));
}
public void printArray(int[] a) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i a.length; i++) {
sb.append(a[i] + " , ");
}
System.out.print(sb.toString());
}
public int[] getArray(int n) {
int[] a = new int[n];
while ((n--) 0) {
int temp = this.getNum(a.length);
while (true n = 0) {
if (check(temp, a)) {
temp = this.getNum(a.length);
} else {
a[n] = temp;
break;
}
}
}
return a;
}
public boolean check(int t, int[] a) {
boolean flag = false;
for (int i = 0; i a.length; i++) {
if (t == a[i]) {
flag = true;
break;
}
}
return flag;
}
public int getNum(int n) {
return r.nextInt(n)+1;
}
注釋我就不加了,你應(yīng)該看得懂
對(duì)數(shù)組進(jìn)行隨機(jī)排序分為兩種形式,一種是完全隨機(jī)排序,一種是不完全隨機(jī)排序,區(qū)別是完全隨機(jī)對(duì)數(shù)組中原先任意的數(shù)據(jù)不會(huì)出現(xiàn)在原來的位置上,那么,一般來說,完全隨機(jī)排序的需求會(huì)相對(duì)較大,我在此先給出完全隨機(jī)方式,如果你需要不完全隨機(jī)排序,可以再說:
舉個(gè)例子:有一批數(shù)據(jù),共n個(gè),依次為a1,a2,a3,…,an-1,an,需要對(duì)它們進(jìn)行完全隨機(jī)排序。排序方法類似于直接選擇,從左至右,即從ai+1~an中隨機(jī)抽取一個(gè)數(shù)據(jù)與ai交換(1≤i≤n-1)。先排序第一個(gè)數(shù)據(jù)a1:從a2~an中隨機(jī)抽出一個(gè)數(shù)據(jù)與a1交換;再排第二個(gè)數(shù)據(jù)a2:從a3~an中隨機(jī)抽取一個(gè)數(shù)據(jù)與a2交換;再排第三個(gè)數(shù)據(jù)a3:從a4~an中隨機(jī)抽取一個(gè)數(shù)據(jù)與a3交換;…;最后排第n-1個(gè)數(shù)據(jù)an-1:從an~an中隨機(jī)抽取一個(gè)數(shù)據(jù)與an-1交換;第n個(gè)數(shù)據(jù)已不需要排序。這樣,總共需要排n-1次。 從以上的算法分析中可以看出,每個(gè)待排序數(shù)據(jù)都會(huì)與其它數(shù)據(jù)交換位置,所以,每個(gè)數(shù)據(jù)都不會(huì)出現(xiàn)在原先的位置上,這是完全隨機(jī)排序。