# MATLAB Help-Sort with Carry

• Apr 23rd 2010, 02:52 AM
Battousia
MATLAB Help-Sort with Carry
Problem: Write a function to sort one real array into ascending order while carrying along a second one. Test the function with the following two 9-element arrays:
a=[1,11,-6,17,-23,0,5,1,-1]
b=[31,101,36,-17,0,10,-8,-1,-1]

This problem is asking that you sort array a into ascending order, while simultaneously carrying a along a second array b. In such a sort, each time an element of array a is exchanged with another element of array a, the corresponding elements of array b are also swapped. When the sort is over, the elements of array a are in ascending order, while the elements of array b that were associated with particular elements of array a are still associated with them.

This is what I have so far:
clc
nvals=input('Enter numbers of values to sort for array1: ')
array1=zeros(1,nvals);
for ii=1:nvals;
string=['Enter value ' int2str(ii) ': '];
array1(ii)=input(string);
end
sorted = sort(array1);
fprintf('\nSorted data for array1:\n');
for ii=1:nvals
fprintf(' %8.4f\n',sorted(ii));
end

This asks the user to input an amount of number values and from those values it sorts the array into ascending order. I don't know any command that can bind the elements in each of these two arrays and rearrange array b according to the rearranged array a.
• Apr 23rd 2010, 03:20 AM
CaptainBlack
Quote:

Originally Posted by Battousia
Problem: Write a function to sort one real array into ascending order while carrying along a second one. Test the function with the following two 9-element arrays:
a=[1,11,-6,17,-23,0,5,1,-1]
b=[31,101,36,-17,0,10,-8,-1,-1]

This problem is asking that you sort array a into ascending order, while simultaneously carrying a along a second array b. In such a sort, each time an element of array a is exchanged with another element of array a, the corresponding elements of array b are also swapped. When the sort is over, the elements of array a are in ascending order, while the elements of array b that were associated with particular elements of array a are still associated with them.

This is what I have so far:
clc
nvals=input('Enter numbers of values to sort for array1: ')
array1=zeros(1,nvals);
for ii=1:nvals;
string=['Enter value ' int2str(ii) ': '];
array1(ii)=input(string);
end
sorted = sort(array1);
fprintf('\nSorted data for array1:\n');
for ii=1:nvals
fprintf(' %8.4f\n',sorted(ii));
end

This asks the user to input an amount of number values and from those values it sorts the array into ascending order. I don't know any command that can bind the elements in each of these two arrays and rearrange array b according to the rearranged array a.
```[AA, Idx]=sort(a); BB=b(Idx);```
```>> a=[1,11,-6,17,-23,0,5,1,-1] a =   1  11  -6  17 -23  0  5  1  -1 >> b=[31,101,36,-17,0,10,-8,-1,-1] b =   31 101  36 -17  0  10  -8  -1  -1 >> [AA,Idx]=sort(a) AA =  -23  -6  -1  0  1  1  5  11  17 Idx =  5 3 9 6 1 8 7 2 4 >> BB=b(Idx) BB =   0  36  -1  10  31  -1  -8 101 -17```