题解 | #明明的随机数#
明明的随机数
https://www.nowcoder.com/practice/3245215fffb84b7b81285493eae92ff0
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n=in.nextInt();//输入要生成的随机数个数n
int[] array1=new int[n];
int[] array=new int[n];
int a1=0;//数组array的长度
int max=0;//用于排列大小时,把大的那个暂时保持到其中
int m=0;//实现从小到大排列时,它的下标上线是逐渐减小,用于控制循环下标上线
int k=0;//是数组最后一个数的下标
for(int i=0;i<n;i++)//用for循环循环输入数据,输入的模拟数据不能为0
{
int a=in.nextInt();
if(a!=0){//只有输入的数据不是0时,才保存到数组array1中
array1[k]=a;
k++;//array1数组长度,是最后一个元素下标+1
}
}
for (int i=0;i<k;i++){//将array1数组中重复的数附为0值
//因为array1数组中的元素可能存在因为重复而被赋予0值的元素,赋予0值的元素不需在判断,故不进入下面的循环,i++,判断下一个
if(array1[i]!=0){
for (int t=i+1;t<k;t++){//将于array1[i]值相同的元素赋值为0
if(array1[i]==array1[t]){
array1[t]=0;
}
}
//以下这两句只能在这个位置,放在外循环里会把0保存进去,放到内循环里会漏掉最后一个值不为0的元素。
array[a1]=array1[i];
a1++;//数组长度
}
}
while(a1-1-m>0){//a1-1-m=1时就比完了,循环一次就排好一个
for(int t=0;t<a1-1-m;t++){//大的往后放,
if(array[t]>array[t+1]){
max=array[t];
array[t]=array[t+1];
array[t+1]=max;
}
}
m++;
}
for(int i=0;i<a1;i++){
System.out.println(array[i]);
}
}
}
阿里云成长空间 743人发布