bubble sort function that sort element of a vector from tha largest to the smallest

defined function that sorts the elements of a vector (of any length) from largest to smallest.
this is my work
function [ y ] = downsort_function( x )
%UNTITLED Summary of this function goes here
% Detailed explanation goes here
n=numel(x);
t=1;
a=0;
while t==1;
for i=1:(n-1)
if x(i)>x(i+1)
x(i+1)=x(i);
t=1;
end
end
end
the problem is when i try to read with my vector, my machine gets stuck. it not giving me anything or i have to restart the machine.
thanks for yr help

Answers (2)

You never set t to 0 so your loop never exits.

4 Comments

Also he doesn't swap x(i+1) and x(i), he just sets x(i+1). So even if he fixes the t=0 issue the code will not work.
Correct, but I was going to let him discover that once the code did not infinite loop.
i made this chance but i still don't have an answer
function [ y ] = downsort_function( x )
%UNTITLED Summary of this function goes here
% Detailed explanation goes here
n=numel(x);
t=1;
a=0;
while t==0;
for i=1:(n-1)
if x(i)>x(i+1)
x(i+1)=x(i);
swap(x(i+1),x(i))
t=1;
end
end
end
I cannot seem to locate any Mathworks function named "swap" ?

Sign in to comment.

x=input('enter:');
k=length(x);
for n=1:k
for m=1:k
if x(n)>x(m)
temp=x(n);
x(n)=x(m);
x(m)=temp;
end
end
end
disp(x);

1 Comment

Your m indexing could be better, and you have no short-circuit exit if there are no swaps.

Sign in to comment.

Asked:

on 9 Dec 2012

Commented:

on 24 Feb 2020

Community Treasure Hunt

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

Start Hunting!