sorting a list by position

p=[5 3 1 7 9 2 4 6 8]
o=[0 2 4 2 4 3 1 1 3]
I want to sort o from largest to smallest, but while sorting o, the movement position of o is also applied to the same position of p when sorting
so when aftersorted o=[4 4 3 3 2 2 1 1 0]
p will become [9 1 2 8 3 7 4 6 5]
or [1 9 8 2 7 3 6 4]
where in p the number 9 and 1 can be swap and is the same because from o there are two 4's that is in the same position as p
2 and 8 could be swap
3 and 7 can be swapped
4 and 6 can be swapped
5 cannot be swapped because only 1 number

 Accepted Answer

[newo, order] = sort(o, 'descend');
newp = p(order);

2 Comments

what is newo and newp
Guillaume
Guillaume on 1 May 2019
Edited: Guillaume on 1 May 2019
Your new sorted o and sorted p. You can call them whatever you want, o and p respectively if you want to replace the original vectors.

Sign in to comment.

More Answers (0)

Categories

Tags

Asked:

on 1 May 2019

Edited:

on 1 May 2019

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!