在已排序數組指定位置插入新元素,保持有序:
arr[i+1] = arr[i]。void insert(int arr[], int *n, int pos, int val) {
// pos 為 0-based 插入索引,合法性檢查省略
for (int i = *n; i > pos; i--) {
arr[i] = arr[i-1];
}
arr[pos] = val;
(*n)++;
}
若使用鏈表,只需修改前驅節點 next 指向新節點,新節點 next 指向原後繼節點,無需移動數據,時間 O(1)。
選擇合適數據結構,從算法層面優化性能。