我正在运行排序算法。
我有一个整数矩阵,并且我知道其中的所有整数都小于 1000。
是删除一行(使用x(10,:) = []
)还是在行中的每个槽中放置一个无效值(例如 1001)更好?
我在这里考虑效率。
我正在运行排序算法。
我有一个整数矩阵,并且我知道其中的所有整数都小于 1000。
是删除一行(使用x(10,:) = []
)还是在行中的每个槽中放置一个无效值(例如 1001)更好?
我在这里考虑效率。
为了比较,只需运行 tic/toc。
X = randn(1000);
time1 = 0;
for i= 1:100
X = randn(1000);
tic
X(10,:) = [];
a = toc;
time1 = time1 +a;
end
time2 = 0;
for i= 1:100
X = randn(1000);
tic
X(10,:) = 1001;
a = toc;
time2 = time2 +a;
end
disp ([time1 time2])
0.3882 0.0026
判决:插入值。我猜是因为删除一行可能与重新排列矩阵有关。只要确保在排序时,你的算法只触及“非法值”一次,否则你需要做一些复杂的大 O 计算来解决你的问题