Arrange (array of 9 numbers) in ascending order. (no sort)
Show older comments
Please suggest me to find a commnad using for loop to Arrange (array of 9 numbers) in ascending order without using sort command. I used the following one, which didn't work
A = [4 16 36 64 1 9 25 49 81] B = [] for i = 1:9
B(i) = max(A)
find max(A)== 0
end
Answers (2)
Honglei Chen
on 19 Sep 2012
You can do
B = unique(A)
But seriously, are you trying to implement a sort algorithm in MATLAB? If so, there are many algorithms available, e.g., quick sort
1 Comment
Aviroop Dutt Mazumder
on 21 Sep 2012
Jan
on 22 Sep 2012
Improvement of your method:
A = [4 16 36 64 1 9 25 49 81];
B = zeros(1, 9); % Pre-allocate!
for ii = 1:9
[value, index] = max(A);
B(ii) = value;
A(index) = -Inf;
end
For 9 elements an insert-sort would be fine also.
6 Comments
Safwan
on 22 Nov 2016
Can you please explain to me why did you put
A(index) = -Inf;
Image Analyst
on 22 Nov 2016
So that element of A will no longer be found as the maximum value of A in subsequent iterations. If you didn't do this, it would simply find the very same value of A each iteration!
James Tursa
on 22 Nov 2016
This is to eliminate that particular element from the result of the next max(A) calculation, since that element has already been placed into the B vector.
Larissa Monjaraz
on 7 Mar 2021
How would the code change if you wanted it in descending order?
Walter Roberson
on 7 Mar 2021
use min and +inf
Larissa Monjaraz
on 7 Mar 2021
Ooooh that makes sense. Thank you!
Categories
Find more on Get Started with MATLAB in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!