在插入排序中返回索引

时间:2013-11-27 04:38:52

标签: matlab sorting

我想知道如何在插入排序算法中返回原始元素的索引,例如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)返回带有原始索引的已排序元素。

1 个答案:

答案 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