比如原来是012356789现在输入四,就成了0123456789
追答那我理解不是排序问题,是搜索插入点的问题
追问九个数变成十个
所以,怎么写程序。。
追答插入新数时,从前向后遍历数组元素,if(x>=a[i] & x <=a[i+1])就插入在i+1这个位置即可
& -> &&
追问这个元素数变了啊,怎么输出新的数组
怎么写就插入这个位置
追答严格的考虑这个问题的话,需要考虑,1,所有元素都比插入数小,2,所有元素都等于插入数,3,元素中等于元素个数大于1, 4元素中有一个元素等于插入数,5,数组所有元素都大于插入数
i+1到结尾的元素,按照从后到前的顺序向后移动一个位置,然后把新数插入到i+1
追问我有思路,没程序
原题发给我,我帮你写
追问接下来怎么办
追答只需要输出时把插入数放在合适的位置即可?
追问看来需要插入进去
然后在输出
追问所以,程序呢
追答int x = 0;
int a[10] = {x};
int i;
int n = -1;
//搜索插入位置
for(i=1;i= a[i] && x a[1]){
n = sizeof(a);
}else if(x < a[sizeof(a) - 1]){
n = 0;
}
}
//蒋输入位置前的所有元素前移一个位置
for(i=1; i<sizeof(a); i++){
if(i < n){
a[i-1] = a[i];
}
}
//将新数插入数组
a[i] = x;
//输出所有元素
for(i=0; i<sizeof(a);i++){
printf("%d", a[i]);
}