哪个是在有序列表中插入新元素的最佳算法? 假设我有一个列表[1,3,8,10,14,20],我想插入元素9。
我不是在谈论编程语言,而是在谈论最有效的算法。
Tks
ps .:我不确定插入排序是否是最好的。
答案 0 :(得分:2)
要插入单个元素,请从头开始遍历列表,直到找到插入点,然后(通过指针操作)插入新元素。
如果您需要插入许多元素,并且列表不一定必须一直都在排序,那么最好在前面插入新元素然后进行最终排序。
答案 1 :(得分:0)
插入新元素将花费几乎相同的时间,无论算法是否为数组。为了更好地解释它:
在算法中,您将始终需要一个O(n)
复杂度部分来移动插入元素之后的数组元素,以腾出空间放置该元素。
您最好的选择是降低搜索复杂度,而最好的方法是使用二进制搜索,其复杂度为O(log n)
。
使用此插件,插入的复杂度为(n + log n)
,与O(n)
相同。
要提高效率,您需要选择一个更好的数据结构,该结构具有恒定的插入时间,例如二叉搜索树或某种堆。