Gnome sort?

I have a question about gnome sorts. I cannot seem to find a code anywhere on the internet that would give me some clue about how to going about creating a gnome sort. I have found this:
function list = gnomeSort(list)
i = 2;
j = 3;
while i <= numel(list)
if list(i-1) <= list(i)
i = j;
j = j+1;
else
list([i-1 i]) = list([i i-1]);
i = i-1;
if i == 1
i = j;
j = j+1;
end
end
end
but it tells me "Input argument "list" is undefined" so how would I go about fixing this? Any help would be greatly appreciated!

Respuestas (2)

Walter Roberson
Walter Roberson el 20 de Feb. de 2012

0 votos

Presumably "list" should be initialized to the list of values to be sorted.

2 comentarios

Becky
Becky el 20 de Feb. de 2012
I am really new to Matlab, so everything people say is like in a foreign language to me haha! What do you mean by it should be initialized to the list of values to be sorted? What would I do to the code to do this? Sorry for being so rubbish!
Walter Roberson
Walter Roberson el 20 de Feb. de 2012
list = [17 39 2 6.8 pi];

Iniciar sesión para comentar.

Jan
Jan el 20 de Feb. de 2012

0 votos

To learn the basics of Matlab read the Getting Started chapters in the documentation.
For this problem you have to define the input of the function, e.g.:
list = randperm(20);
list = gnomeSort(list)

3 comentarios

Becky
Becky el 20 de Feb. de 2012
I've made a few alterations:
N=input('N=');
for i = 1
for j = 1:N
a(i,j)=input(strcat('a(',int2str(i),',',int2str(j),')='));
while i <= numel(a)
if a(i-1) <= a(i)
i = j;
j = j+1;
else
a([i-1 i]) = a([i i-1]);
i = i-1;
if i == 1
i = j;
j = j+1;
end
end
end
disp(a)
end
end
But it's getting stuck at "if a(i-1) <= a(i)" because if i=1, it comes up with zero, which obviously isn't a positive integer, so comes up with an error. Any idea how to fix it?
Jan
Jan el 20 de Feb. de 2012
The outer "for i=1" loop is not a loop, so avoid it.
I do not know what you want to achieve. Therefore it is hard to guess, how the code should be fixed.
Walter Roberson
Walter Roberson el 20 de Feb. de 2012
Perhaps there was a reason that the original code did not initialize i to 1 ?

Iniciar sesión para comentar.

Categorías

Etiquetas

Preguntada:

el 20 de Feb. de 2012

Community Treasure Hunt

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

Start Hunting!

Translated by