首页 > 代码库 > 在有顺序的数列中插入一个元素后该数列仍然是有顺序的数组
在有顺序的数列中插入一个元素后该数列仍然是有顺序的数组
/**
在有顺序的数组中插入一个元素后该数列仍然是有顺序的数组:
思路:先找到该元素的插入位置
插入数据时要先将数组中得元素后移,然后插入该元素
*/
#include <stdio.h>
#define n 10
int main()
{
// 在有顺序的数列中插入一个元素后该数列仍然是有顺序的数列:
int a[n] = {-1, 3, 6, 9, 13, 22, 27, 32, 49};
int insertVal;
int insertLoc;
scanf("%d", &insertVal);
// 找到插入的数在数组中得位置
for (int i = 0; i<9; i++) {
if (insertVal>a[i] && insertVal<a[i+1]) { // 该元素在数列元素中
insertLoc = i+1;
// 插入到该位置,(需要将该位置后面的值后置,然后插入该值)
for (int j =n-1; j>i+1; j--) {
a[j] = a[j-1];
}
a[i+1] =insertVal;
}else if (insertVal < a[n-10]){ // 该元素在第一位置
insertLoc = n-10;
for (int j = n-1; j>0; j--) {
a[j] = a[j-1];
}
a[0] = insertVal;
}else if (insertVal > a[n-2]){ // 该元素在最后面
insertLoc = n-1;
a[n-1] = insertVal;
}
}
// 输出
for (int i = 0; i <n; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
在有顺序的数列中插入一个元素后该数列仍然是有顺序的数组