原题链接:[编程入门]数组插入处理
解题思路:
1、当n > a[8]时
将n存储在a[9]中
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
1 | 7 | 8 | 17 | 23 | 24 | 59 | 62 | 101 | n |
if (n >= a[8]) a[9] = n;
2、当n < a[0]时
将n存储在a[0]中,原有排序依次向后移一位
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
n | 1 | 7 | 8 | 17 | 23 | 24 | 59 | 62 | 101 |
else if (n = 1; i--) { a[i] = a[i - 1]; } a[0] = n; //将n存储在a[0]中 }
3、当a[0] < n < a[8]时,需将n插入到第i+1个位置中
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
1 | 7 | 8 | 17 | n | 23 | 24 | 59 | 62 | 101 |
else if (n > a[0] && n <= a[8]) { for (i = 0; i a[i] && n i; j--) { a[j] = a[j - 1]; //插入n,n后的数往后移一格; } a[i + 1] = n; //将n存储在a[i+1]中 } } }
参考代码:
#includeint main(void) { int a[10]; int i; int n; for (i = 0; i < 9; i++) { scanf("%d", &a[i]); //将9个数存入数组a中 } scanf("%d", &n); //输入要插入的数 if (n >= a[8]) a[9] = n; //情况1 else if (n = 1; i--) { a[i] = a[i - 1]; } a[0] = n; } else if (n > a[0] && n <= a[8]) //情况3 { for (i = 0; i a[i] && n i; j--) { a[j] = a[j - 1]; } a[i + 1] = n; } } } for (i = 0; i <= 9; i++) { printf("%d\n", a[i]); } return 0; }
//还可使用二分法找到需要插入的位置,可有效提高时间复杂度 //不过后面没有将target插入到数组当中 #include<iostream> #include<vector> using namespace std; int searchInsert(vector<int>& nums, int target) { int start = 0; int end = nums.size() - 1; int mid; if (target < nums[0]) { return 0; } else if (target > nums[end]) { return end + 1; } else { while (start <= end) { mid = (start + end) >> 1 - 1; if (nums[mid] > target) { end = mid - 1; } else if (nums[mid] < target) { start = mid + 1; } if (nums[mid] == target) { return mid; } } return mid + 1; } } int main(){ vector<int>nums; int target; int n; for (int i = 0; i < 9; i++) { cin >> n; nums.push_back(n); } cin >> target; int index = searchInsert(nums, target); for (int i = 0; i < index; i++) { cout << nums[i] << endl; } cout << target << endl; for (int i = index; i < 9; i++) { cout << nums[i] << endl; } return 0; }
0.0分
34 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复