import java.util.Arrays;
import edu.princeton.cs.algs4.StdRandom;
import edu.princeton.cs.algs4.Stopwatch;
public class Algorithms1_4_8 {
public static void main(String[] args) {
int[] random=new int[1000000];
for(int i=0;i<random.length;i++) {
random[i]=StdRandom.uniform(1000);
}
Stopwatch timer=new Stopwatch();
System.out.print(Correct(random));
double time=timer.elapsedTime();
System.out.println("time:"+time);
Stopwatch timer2=new Stopwatch();
System.out.print(NBcorrect(random));
double time2=timer2.elapsedTime();
System.out.print("time:"+time2);
}
public static int Correct(int random[]) {
int count=0;
int N=random.length;
Arrays.sort(random);
for(int i=0;i<N;i++) {
for(int j=i+1;j<N;j++) {
if(random[i]==random[j]) {
count++;
}
}
}
return count;
}
public static int NBcorrect(int random[]) {
int count=0;
int N=random.length-1;
Arrays.sort(random);
while(N>0) {
int correct=0;
while(true) {
if(N>0&&random[N]==random[--N]) {
correct++;
}else {
for(int i=1;i<=correct;i++) {
count+=i;
}
break;
}
}
}
return count;
}
}不知道这个是什么级别的,反正比线性级别的吊