rt,之前看到有一篇帖子在求问将插入排序转化成链表进行二分是否可以达到 nlogn,但是显然那个人是缺乏考虑的(因为链表的无序性难以二分)。但是依次我想到一种可能的排序思路:
对于链表平均维护 n 个标记,对于每次插入先二分找到其对应的标记区间(时间复杂度logn),然后对那个区间进行扫描(n),插入之后更新标记位置(这个时间复杂度应该可以均摊,但是我不会算,但不会高于 n),这样总时间复杂度 O(nn),即 O(n1.5), 比希尔排序稍慢,但它的瓶颈在于扫描,个人感觉常数不大,而且所占空间也小
求问:
-
这种排序思路可行嘛?
-
如果可行,更新标记的时间复杂度均摊是多少?
-
在随机数据下,扫描的时间复杂度应该可以减少,请问这个算法的平均复杂度是多少?