0

我正在运行排序算法。

我有一个整数矩阵,并且我知道其中的所有整数都小于 1000。
是删除一行(使用x(10,:) = [])还是在行中的每个槽中放置一个无效值(例如 1001)更好?

我在这里考虑效率。

4

1 回答 1

1

为了比较,只需运行 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 计算来解决你的问题

于 2012-05-13T13:14:03.560 回答