2

这个答案指出

我不认为你(或我)可以在 MATLAB 中做动态数据结构。我们必须使用 MATLAB OO 功能和 MATLAB 类。因为我认为这些工具实际上是围绕 Java 的 MATLAB 包装器,所以我大胆声称这些工具在 MATLAB 之外。我承认,这是一个语义问题。如果你想用 MATLAB 做动态数据结构,你必须使用 OO 和类,你不能用我认为的核心语言来做,它在用户级别缺乏指针。

现在假设一个包。新号码以随机顺序添加到包中,但仍应订购号码。数字的数量是未知的。因此我需要一个动态数据结构:结构的大小必须能够改变。此外,结构必须能够平衡,即我需要对其进行排序。

我应该使用哪种数据结构来满足 Matlab 中的动态平衡数据结构要求?

4

1 回答 1

2

Matlab 的矩阵本质上是动态的。如果您有一个vector有序数字并想number在其适当的位置插入一个新数字(保持向量有序),您可以简单地做

[~, ind] = find(number<=vector,1,'first'); % determine where to insert
if isempty(ind), ind = numel(vector)+1; end % in this case, insert at the end
vector = [vector(1:ind-1) number vector(ind:end)]; % do the insert, extending the vector

当然这不是很快,因为需要重新分配内存。

于 2013-08-28T16:57:21.000 回答