我想知道如何在插入排序算法中返回原始元素的索引,例如matlab中的函数[B,IX] = sort(A,...)
。
算法是:
function list = insertionSort(list)
for i = (2:numel(list))
value = list(i);
j = i - 1;
while (j >= 1) && (list(j) > value)
list(j+1) = list(j);
j = j-1;
end
list(j+1) = value;
end %for
end %insertionSort
我希望函数[list indx]= insSort(list)
返回带有原始索引的已排序元素。
答案 0 :(得分:0)
希望这不是作业。
function [ind, list] = insertionSort(list)
ind = [1:length(list)]'; % build list of indicies
for i = (2:numel(list))
value = list(i);
j = i - 1;
while (j >= 1) && (list(j) > value)
list(j+1) = list(j);
ind(j+1) = ind(j); % copy index when you shift
j = j-1;
end
list(j+1) = value;
ind(j+1) = i; % write final index location
end
end