一道简单算法!AC不了!不求更效率方法!只求解为什么AC不了,那点错了!
描述 小明的老师布置了一份调查作业,小明想在学校中请一些同学一起做一项问卷调查,聪明的小明为了实验的客观性,想利用自己的计算机知识帮助自己。他先用计算机生成了N个1到1000之间的随机整数(0<N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。
输入:
输入有2行,第1行为1个正整数,表示所生成的随机数的个数:
N
第2行有N个用空格隔开的正整数,为所产生的随机数。
输出:
输出也是2行,第1行为1个正整数M,表示不相同的随机数的个数。第2行为M个用空格隔开的正整数,为从小到大排好序的不相同的随机数
import java.util.Random;
import java.util.Scanner;
public class Test_XiaoMingIsHomework {
/**
* @param args
* 小明的作业
*/
public static void main(String[] args){
Random rd = new Random();
Scanner sc = new Scanner(System.in);
int num=sc.nextInt();
int[] arrayNum = new int[num];
for(int i=0;i<num;i++){
int temp=rd.nextInt(1001)+1;
if(temp!=0)
arrayNum[i]=temp;
System.out.print(arrayNum[i]+" ");
}
System.out.println();
sort(arrayNum);
}
static void sort(int []n){
int num=n.length;
//排序
for(int i=n.length-1;i>0;i--){
for(int j=0;j<i;j++){
if(n[j]>n[j+1]){
inttemp =n[j];
n[j]=n[j+1];
n[j+1]=temp;
}
}
}
//去重
for(int i=0;i<n.length;i++){
for(int j=i+1;j<n.length;j++){
if(n[i]==n[j]){
n[j]=0;
num--;
//System.out.println(n[i]);
}
}
}
System.out.println(num);
for(int i=0;i<n.length;i++){
if(n[i]!=0)
System.out.print(n[i]+" ");
}
}
}
[解决办法]
排序好像用的冒泡,没仔细看,大概应该没问题
去重显然错了,重复的修改为0,连续的重复都修改为0,下次0=0,又加了一次
这种错误自己做几个测试用例,单步一下不就知道问题在哪里了么?