请问一下关于这一段排序去重的代码哪里出了问题
#include<stdio.h>#include<stdlib.h>
#include<string.h>
void bubble_sort(int *arr,int len)
{
int i,j;
for(i=0;i<len;i++){
for(j=i+1;j<len;j++){
if(arr[i]==arr[j]){
arr[j]=arr[len-1];
len--;
}
}}}//冒泡排序去重
int cmp1(const void *a,const void *b)
{
return *(int *)a - *(int *)b;
}
int cmp2(const void *a,const void *b)
{
return *(int *)b - *(int *)a;
}//升序降序函数
int main()
{ char judge;
scanf("%c",&judge);
int a[1000];
int x,i=0;
while(scanf("%d",&x)!=EOF)
{ a[i]=x;
i++;}
int num=0;
int len=i;
for(int j=0;j<i;j++){
for(int k=j+1;k<i;k++){
if(a[j]==a[k]){
a[j]=a[len-1];
len--;
num++;
}
}}//本来不想重新写冒泡,但是为了找出去掉多少个元素我还是加了num变量,不知怎么改会更简便
bubble_sort(a,i-num);
if(judge=='A')
qsort(a,i-num,sizeof(int),cmp1);
if(judge=='D')
qsort(a,i-num,sizeof(int),cmp2);
for(int j=0;j<i-num-1;j++)
printf("%d ",a[j]);
printf("%d",a[j-num-1]);
return 0;
}