Arrange (array of 9 numbers) in ascending order. (no sort)
Afficher commentaires plus anciens
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
2 commentaires
per isakson
le 19 Sep 2012
Google for "bubble sort"
Aviroop Dutt Mazumder
le 21 Sep 2012
Réponses (2)
Honglei Chen
le 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
Jan
le 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 commentaires
Safwan
le 22 Nov 2016
Can you please explain to me why did you put
A(index) = -Inf;
Image Analyst
le 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
le 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
le 7 Mar 2021
How would the code change if you wanted it in descending order?
Walter Roberson
le 7 Mar 2021
use min and +inf
Larissa Monjaraz
le 7 Mar 2021
Ooooh that makes sense. Thank you!
Catégories
En savoir plus sur Resizing and Reshaping Matrices dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!