Why does my vector repeat numbers?

1 view (last 30 days)
CalamityGoat
CalamityGoat on 28 Apr 2015
Commented: Chad Greene on 28 Apr 2015
So I am trying to sort a random array of integers and with my code everything works except certain numbers will repeat multiple times. I'm not sure what I am doing that's making it repeat but I think it has to do with me possibly overwriting my variable x(k).
function y = sort(x)
for k = 1:length(x)-1
% Compare x(k) with values in original array x
for i = (k+1):length(x)
if x(k) < x(i)
temp = 0;
temp = x(i);
x(k) = temp;
end
end
y = x;
  4 Comments
Stephen23
Stephen23 on 28 Apr 2015
Also note that you should avoid using i and j as variable names, as these are both names of the inbuilt imaginary unit.
Chad Greene
Chad Greene on 28 Apr 2015
Also be careful using i and j as variables. They're both built in as the imaginary unit. Overwriting them is usually not a problem, but when it is a problem, it can be hard to track down.

Sign in to comment.

Accepted Answer

KL
KL on 28 Apr 2015
Edited: KL on 28 Apr 2015
for j = 1:length(x)-1
% Find jth smallest element
imin = j;
for i = (j + 1):length(x)
if (x(i) < x(imin))
imin = i;
end
end
if (imin ~= j)
val = x(imin);
x(imin) = x(j);
x(j) = val;
end
end
  1 Comment
CalamityGoat
CalamityGoat on 28 Apr 2015
Works perfectly had to change the logical expression so the array would descend rather than ascend. Thanks a bunch.

Sign in to comment.

More Answers (0)

Tags

Products

Community Treasure Hunt

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

Start Hunting!