1

通常、配列の中央(任意の場所)への挿入にはコストがかかる可能性があります。要素を1つのスロットにシフトするのに、O(n)時間かかる場合があり、配列のメモリを再割り当てする場合もあります。一方、リンクされたリンクにはO(1)時間がかかる場合があります。

しかし、Ruby、Python、およびPHPには、配列の中央に要素を挿入するのにO(1)時間しかかからない配列オブジェクトはありますか?

更新:そして、配列内の任意の場所での配列要素の置換またはそれにアクセスすることもO(1)であることに従わなければなりません。

更新:次のように挿入:

1.9.3-p125 :001 > RUBY_DESCRIPTION
 => "ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-darwin11.3.0]" 

1.9.3-p125 :002 > a = %w{ a b c d }
 => ["a", "b", "c", "d"] 

1.9.3-p125 :007 > a.insert(3, 123)
 => ["a", "b", "c", 123, "d"] 
4

3 に答える 3

2

PHPでは、\SplDoublyLinkedListこれを実行できます。http://php.net/manual/en/class.spldoublylinkedlist.php

PHP配列は、C、C#、Javaなどで見られる配列ではないことに注意してください。これらは順序付けられたハッシュマップです。http://www.php.net/manual/en/language.types.array.phpのイントロを参照してください

ユースケースによっては(これが宿題でない場合)、\SplMaxHeapO(1)ではありませんが、最適な選択である可能性があります。http://php.net/manual/en/class.splmaxheap.php

于 2012-05-05T23:59:47.510 に答える
0

組み込みのメソッドを使用してRubyでこれを行うことはできません。

于 2012-05-06T02:59:51.707 に答える
0

collections.deque議論を考えると、Pythonではあなたの説明に合うかもしれません。これは両端キューであり、二重にリンクされたリストとして実装されているように見えます

于 2012-05-06T00:26:01.320 に答える