随机产生值不重复的一维数组,并求①最小值,②次小值,③最大值及其索引

时间:2021-12-05 21:20:52

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”为例)
随机产生值不重复的一维数组,并求①最小值,②次小值,③最大值及其索引