1.隨機產生值不重複的一維數組,利用Random類,並採用flag標誌
2.輸出數組中最小值和次小值僞代碼:
Input Parameter s
Output Parameter smallest,sec_smallest
find_two_smallest(s,smallest,sec_smallest){
if(s[1]>s[2]){
smallest=s[2]
sec_smallest=s[1]
}
else{
smallest=s[1]
sec_smallest=s[2]
}
for(i=3 to s.length)
if(s[i]<sec_smallest)
if(s[i]<smallest){
sec_smallest=smallest
smallest=s[i]
}
else
sec_smallest=s[i]
}
3.三個算法的源代碼如下:
package chapter1;
import java.util.Random;
public class two {
static int n = 10;// 數組大小
static int out[] = new int[n];// 隨機產生無重複數值數組
/**
*
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
RandomArray();// 調用隨機數組產生方法
System.out.println("----------------隨機數組---------------");
for (int i = 0; i < out.length; i++) {
System.out.println("數組第" + i + "值:" + out[i]);
}
// 算法1:下面使用while循環,回送數組中最小值
// int smallest = out[0];
// // //
// System.out.println("-------smallest---"+smallest);
// int i = 1;
// while (i < out.length) {
// if (out[i] < smallest) {
// smallest = out[i];
// }
// i++;
// }
// System.out.println("數組最小值爲:"+smallest);
// 算法2:下面輸出數組中的最小值和次小值
// int smallest = out[0];
// int sec_smallest = out[1];
// int i = 2;
// while (i < out.length) {//雙重判斷,先判斷是否小於次最小,在判斷是否小於最小
// if (out[i] < sec_smallest) {
// if (out[i] < smallest) {
// sec_smallest = smallest;
// smallest = out[i];
// } else {
// sec_smallest = out[i];
// }
// }
// i++;
// }
// System.out.println("數組最小值爲:" + smallest);
// System.out.println("數組次最小值爲:" + sec_smallest);
// 算法3:寫一個算法,送回數組的最大值及其下標
int index=0;
int max=out[0];
for (int j = 1; j < out.length; j++) {
if (out[j]>max) {
max=out[j];
index=j;
}
}
System.out.println("最大值:"+max);
System.out.println("最大值下標:"+index);
}
// 函數 RandomArray() ——隨機產生不重複的維度爲n的一維數組。
static void RandomArray() {
int randarray[] = new int[n];
int randint = 0;
int count = 0;
boolean flag = false;// 用於標誌生成的隨機數是否有重複
while (count < n) {
Random random = new Random();
randint = random.nextInt(100);
for (int i = 0; i < count; i++) {
if (randarray[i] == randint) {// 遍歷之前存放的不重複的前count-1個數組值,對比當前生成的隨機數,看是否重複
flag = true;
break;
} else {
flag = false;
}
}
if (flag == false) {
randarray[count] = randint;
count++;
}
}
// for (int i = 0; i < randarray.length; i++) {
// System.out.println("數組第" + i + "值:" + randarray[i]);
// }
for (int k = 0; k < n; k++) {
out[k] = randarray[k];
}
// return randarray[0];
}
}
4.程序執行結果圖(以“算法3”爲例)