Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
插入C中的有序列表:使用数组还是链表?_C_Insertion_Insertion Order - Fatal编程技术网

插入C中的有序列表:使用数组还是链表?

插入C中的有序列表:使用数组还是链表?,c,insertion,insertion-order,C,Insertion,Insertion Order,当尝试插入有序列表时,考虑这两种情况。 使用指针数组。二进制搜索以查找 插入点为: 使用memmove()移动字节,为新地址腾出空间 使用迭代移动地址,为新地址腾出空间 使用链表和线性搜索 哪个表现更好?我的猜测是,在优化代码中,1的两个选项。性能大致相同,但1的性能如何。二,。比较似乎他们都是O(n)。有没有更简单的方法?是否可以在任何类型的链表上设置二进制搜索 任何其他建议都将非常受欢迎。链表插入时间将是O(1)但是如果您需要一个有序的数据结构,那么您应该使用二元搜索树。但是搜索将是O(

当尝试插入有序列表时,考虑这两种情况。

  • 使用指针数组。二进制搜索以查找 插入点为:

    • 使用memmove()移动字节,为新地址腾出空间

    • 使用迭代移动地址,为新地址腾出空间

  • 使用链表和线性搜索

  • 哪个表现更好?我的猜测是,在优化代码中,1的两个选项。性能大致相同,但1的性能如何。二,。比较似乎他们都是O(n)。有没有更简单的方法?是否可以在任何类型的链表上设置二进制搜索


    任何其他建议都将非常受欢迎。

    链表插入时间将是
    O(1)
    但是如果您需要一个有序的数据结构,那么您应该使用二元搜索树。但是搜索将是O(n),对吗?顺便说一句,您的链表缓存命中率通常会非常糟糕。#1的硬件预取器适合您。所以建立了一些声音测试和测量。@JeremyRosenberg是的,搜索单链接列表将是O(n)。@WhozCraig将这样做。我是否应该期待1中的两个选项。执行类似的操作