C++小练习题 - 002
随机生成100 个0~9 之间的随机整数,输出每个数出现的次数。
算法思想:首相对无序的数组排序,然后得到一个有序的序列,然后我们就会发现一个很有趣的规律,就是重复的数字都聚在了一起,他们的个数就等于区间值,例如数组:1[0],1[1],1[2],1[3],1[4],2[5],2[6],2[7],3[8] ,这样1数组的区间值就等于4-0+1=5。
int main(
int int arr[100] ;
int i=0 ;int j=0 ;int c=0 ;
srand(time(0)) ;
//初始化数组
for(i=0 ; i<100 ;i++){
arr[i] = rand()%10 ;
}
//对数组排序
for(i=0 ; i<100 ; i++){
for(j=99 ; i>i ;i--){
if(arr[i]>arr[j]){
c = arr[i] ;
arr[i] = arr[j] ;
arr[j] = c ;
}
}
}
//计算重复出现的个数,算法:j-i+1 为出现次数,i为顺序第一次出现的数组中的坐标,j为最后一次出现的数组中的坐标
int n = 0 ; c=-1 ;
for(n=0 ; n<100 ; n++){
if(c==-1){
c = arr[n] ;
i = n ;
continue ;
}
if(c!=arr[n]){
c = -1 ;
j=n-1 ;
printr(c这个数出现的次数为 (j-i+1) 次) ;
}
}
)