隨機產生值不重複的一維數組,並求①最小值,②次小值,③最大值及其索引

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”爲例)
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章