JAVA算法题练习---01_提取不重复的整数

题目描述

明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。

 

 

Input Param 

     n               输入随机数的个数     

 inputArray      n个随机整数组成的数组 

     

Return Value

 OutputArray    输出处理后的随机整数




代码如下:


import java.util.Scanner;
public class test{
public static void main(String[] args)
{
Scanner input = new Scanner (System.in); 
int n = input.nextInt();
int inputArray[] = new int[n];
int OutputArray[] = new int[n];

//Step1.随机生成[1,1000]间整数
for(int m=0;m<n;m+=1)
{
inputArray[m] = (int) ( Math.random()*1000+1);
}

//Step2.对Step1结果验证输出

for (int m=0;m<n;m+=1)
{
System.out.print(inputArray[m]+"  ");
}
System.out.println();

//Step3.去除重复值,即重复值赋0;
for (int m=0;m<n-1;m+=1)
{
for (int i=m+1;i<n;i+=1)
{
if(inputArray[m]==inputArray[i])
{
inputArray[i]=0;
}
}
}

//Step4.对Step3结果验证输出
for (int m=0;m<n;m+=1)
{
System.out.print(inputArray[m]+"  ");
}
System.out.println();

//Step5.排序,采用冒泡排序
for (int m=0;m<n;m+=1)
{
for (int i=1+m;i<n;i+=1)
{
if(inputArray[m]>inputArray[i])
{
int k = inputArray[m];
inputArray[m] = inputArray[i];
inputArray[i]  = k;
}
}
}

//Step5.将inputArray[]通过arraycopy函数复制给OutArrray[],去除0输出结果。
for (int m=0;m<n;m+=1)
{
System.arraycopy(inputArray,inputArray[0],OutputArray,OutputArray[0],inputArray.length);
if(OutputArray[m]!=0)
{
System.out.print(OutputArray[m]+"  ");
}

}
}
}


输出如下:

输入 n=100;

输出:

100
1.随机生成数    832  516  238  647  501  286  508  233  255  340  849  388  936  333  1000  176  292  739  11  762  219  440  114  730  786  123  69  448  458  350  173  300  967  999  359  386  122  724  436  637  401  10  357  66  580  392  549  297  801  385  764  393  398  756  612  422  559  802  925  192  366  427  368  48  71  919  246  670  480  524  323  363  238  79  521  400  343  223  822  626  709  935  324  651  719  461  365  668  731  7  887  119  205  912  698  189  699  426  107  386  
2.以0代替重复值    832  516  238  647  501  286  508  233  255  340  849  388  936  333  1000  176  292  739  11  762  219  440  114  730  786  123  69  448  458  350  173  300  967  999  359  386  122  724  436  637  401  10  357  66  580  392  549  297  801  385  764  393  398  756  612  422  559  802  925  192  366  427  368  48  71  919  246  670  480  524  323  363  0  79  521  400  343  223  822  626  709  935  324  651  719  461  365  668  731  7  887  119  205  912  698  189  699  426  107  0  
3.最终排序去0输出结果    7  10  11  48  66  69  71  79  107  114  119  122  123  173  176  189  192  205  219  223  233  238  246  255  286  292  297  300  323  324  333  340  343  350  357  359  363  365  366  368  385  386  388  392  393  398  400  401  422  426  427  436  440  448  458  461  480  501  508  516  521  524  549  559  580  612  626  637  647  651  668  670  698  699  709  719  724  730  731  739  756  762  764  786  801  802  822  832  849  887  912  919  925  935  936  967  999  1000  




不足:

1 程序未按照功能将各方法独立成块,程序冗长,待改进;

2 冒泡排序算法未掌握,需学习;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值