题目描述
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了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 冒泡排序算法未掌握,需学习;