网站平面图要怎么做今天上海重大新闻事件
题目
给定存储了 n 个从大到小排好序的整数,试将任一给定整数 x
插入数组中合适的位置,以保持结果依然有序。分析算法在最坏、最好情况下的时间、空间复杂度。
解题步骤
1.找到要插入的位置
2.移动元素
3.插入元素
4.数组长度加1
代码
bool DecrSeqInsert(ArrPtr array, ElemSet x) {if (array->size == kMaxSize) {return false;}// 检查元素是否已经存在for (int i = 0; i < array->size; i++) {if (array->data[i] == x) {return false;}}// 找到插入位置int insertPos = 0;while (insertPos < array->size && array->data[insertPos] > x) {insertPos++;}// 移动元素for (int i = array->size; i > insertPos; i--) {array->data[i] = array->data[i - 1];}// 插入元素array->data[insertPos] = x;// 更新数组大小array->size++;return true;
}
步骤详解
1.检查数组是否达到最大长度,检查待插入元素是否存在。
2.找到insertPos(这里是数组的一个索引)
// 找到插入位置int insertPos = 0;while (insertPos < array->size && array->data[insertPos] > x) {insertPos++;}
比如数组[5,4,1,0], 现在要插入3, 那么insertPos就是2,即元素1的索引。
3.移动元素
比如数组[5,4,1,0], 现在要插入3,那么1和0要向后移动一位。
for (int j = array->size; j > insertPos; j--) {array->data[j] = array->[j - 1];
}
4.数组长度加1