题解 | #明明的随机数#

明明的随机数

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]);
        }

        
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务