Cody

Problem 293. Generalized sorting

Solution 48380

Submitted on 22 Feb 2012 by Sven
This solution is locked. To view this solution, you need to provide a solution of the same size or smaller.

Test Suite

Test Status Code Input and Output
1   Pass
%% trivial case [b2, ix2] = sortg([], @lt); assert(isempty(b2) && isempty(ix2));

IX = []

2   Pass
%% usual less than a = rand(1, 100); [b1, ix1] = sort(a); [b2, ix2] = sortg(a, @lt); assert(isequal(b1, b2) && isequal(ix1, ix2));

IX = Columns 1 through 10 0 0 0 0 0 0 0 0 0 0 Columns 11 through 20 0 0 0 0 0 0 0 0 0 0 Columns 21 through 30 0 0 0 0 0 0 0 0 0 0 Columns 31 through 40 0 0 0 0 0 0 0 0 0 0 Columns 41 through 50 0 0 0 0 0 0 0 0 0 0 Columns 51 through 60 0 0 0 0 0 0 0 0 0 0 Columns 61 through 70 0 0 0 0 0 0 0 0 0 0 Columns 71 through 80 0 0 0 0 0 0 0 0 0 0 Columns 81 through 90 0 0 0 0 0 0 0 0 0 0 Columns 91 through 100 0 0 0 0 0 0 0 0 0 0

3   Pass
%% descending order a = rand(1, 100); [b1, ix1] = sort(a, 'descend'); [b2, ix2] = sortg(a, @gt); assert(isequal(b1, b2) && isequal(ix1, ix2));

IX = Columns 1 through 10 0 0 0 0 0 0 0 0 0 0 Columns 11 through 20 0 0 0 0 0 0 0 0 0 0 Columns 21 through 30 0 0 0 0 0 0 0 0 0 0 Columns 31 through 40 0 0 0 0 0 0 0 0 0 0 Columns 41 through 50 0 0 0 0 0 0 0 0 0 0 Columns 51 through 60 0 0 0 0 0 0 0 0 0 0 Columns 61 through 70 0 0 0 0 0 0 0 0 0 0 Columns 71 through 80 0 0 0 0 0 0 0 0 0 0 Columns 81 through 90 0 0 0 0 0 0 0 0 0 0 Columns 91 through 100 0 0 0 0 0 0 0 0 0 0

4   Pass
%% small absolute value first a = randn(1, 100) + randn(1, 100)*1i; [~, ix1] = sort(abs(a)); b1 = a(ix1); [b2, ix2] = sortg(a, @(a, b) abs(a) < abs(b)); assert(isequal(b1, b2) && isequal(ix1, ix2));

IX = Columns 1 through 10 0 0 0 0 0 0 0 0 0 0 Columns 11 through 20 0 0 0 0 0 0 0 0 0 0 Columns 21 through 30 0 0 0 0 0 0 0 0 0 0 Columns 31 through 40 0 0 0 0 0 0 0 0 0 0 Columns 41 through 50 0 0 0 0 0 0 0 0 0 0 Columns 51 through 60 0 0 0 0 0 0 0 0 0 0 Columns 61 through 70 0 0 0 0 0 0 0 0 0 0 Columns 71 through 80 0 0 0 0 0 0 0 0 0 0 Columns 81 through 90 0 0 0 0 0 0 0 0 0 0 Columns 91 through 100 0 0 0 0 0 0 0 0 0 0

5   Pass
%% stable sort a = randi(10, 1, 100); [b1, ix1] = sort(a); % MATLAB's sort() is stable [b2, ix2] = sortg(a, @lt); assert(isequal(b1, b2) && isequal(ix1, ix2));

IX = Columns 1 through 10 0 0 0 0 0 0 0 0 0 0 Columns 11 through 20 0 0 0 0 0 0 0 0 0 0 Columns 21 through 30 0 0 0 0 0 0 0 0 0 0 Columns 31 through 40 0 0 0 0 0 0 0 0 0 0 Columns 41 through 50 0 0 0 0 0 0 0 0 0 0 Columns 51 through 60 0 0 0 0 0 0 0 0 0 0 Columns 61 through 70 0 0 0 0 0 0 0 0 0 0 Columns 71 through 80 0 0 0 0 0 0 0 0 0 0 Columns 81 through 90 0 0 0 0 0 0 0 0 0 0 Columns 91 through 100 0 0 0 0 0 0 0 0 0 0

Suggested Problems

More from this Author1