自认为算法应该没有没有什么问题,c语言初学者,写的代码有点杂乱,恳求大家耐心观看,找出我的疏忽和纰漏
#include<stdio.h>
void xuanzhe(int *a,int b);
int main()
{
int n =0;
int j =0;
scanf("%d",&n);
int call[n];
int test[9000]={0,};
int key[100]={0,};
int iskey =1;
int o =0;
for (int i = 0; i < n; ++i) {
scanf("%d",&call[i]);
}
for (int i = 0; i < n; ++i) {
int t =call[i];
while (t!=1){
if(t%2==0){
t /=2;
} else{
int b =3*t+1;
t =b;
t /=2;
}
test[j++]=t;
}
}
for (int i = 0; i < n; ++i) {
iskey =1;
for (int k = 0; k < j; ++k) {
if(test[k]==call[i]){
iskey =0;
}
}
if(iskey==1){
key[o]=call[i];
o++;
}
}
xuanzhe(key,o);
for (int i = 0; i <= o; ++i) {
int f =o;
printf("%d",key[--o]);
if(o){
printf(" ");
}
}
return 0;
}
void xuanzhe(int *a, int b) {
for (int l = 0; l < b/2+1; ++l) {
int t = 0;
int o = 1;
int u = 0;
for (int i = 0; i < b - 1; i++) {
if (a[t] > a[o]) {
u =a[t];
a[t] =a[o];
a[o] =u;
//TODO
}
o++;
t++;
}
t = b-1;
o = b-2;
for (int i = 0; i < b - 1; i++) {
if (a[t] < a[o]) {
u =a[t];
a[t] =a[o];
a[o] =u;
//TODO
}
o--;
t--;
}
}
}