Alphabetical Sorting (case insensitive)
23 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Heyy everyone, Having small issue with my code, where i want to assort an array of words in alphabetical order (with specific case insensitive sorting). My code is;
A = ["help" ; "MATLAB" ; "anyTIME" ; "matrix" ; "alGEBra"]; [M,N]=size(A); for i = 2:N char = A(i,:); j = i-1;
A_j=A(j+1,:);
A(n+1:i)=A_j(A_j>char); j=j-max(A_th); A(j+1,:) = char;
end disp(A);
it assorts the words, but not correctly. I can successfully do this sorting with numbers no problem. And i can sort the words alphabetically with the output case sensitive(have a couple different codes but wont attach them coz i dont want to bore you lovely people). but getting the output as alphabetical AND case insensitive is proving much more problematic (NOTE: i know you could use the sort function, but i want to do it with this one for loop). Any help is much appreciated <3
1 comentario
Stephen23
el 19 de Abr. de 2018
Editada: Stephen23
el 19 de Abr. de 2018
The first line
A = ["help" ; "MATLAB" ; "anyTIME" ; "matrix" ; "alGEBra"];
[M,N]=size(A);
So given that N==1, I don't see how this for loop will ever iterate even once:
for i = 2:N
Also, if A is really a string array, then char = A(i,:); is not a char vector but another string array.
Respuestas (1)
Suraj Mankulangara
el 23 de Abr. de 2018
Hello Aiden,
Here's a simple (and likely not very efficient) bubblesort implementation of case-insensitive string array sorting:
A = ["help" ; "MATLAB" ; "anyTIME" ; "matrix" ; "alGEBra"];
[M,N]=size(A);
for i = 1:M-1
for j = 1:M-1
curr = A(j);
next = A(j+1);
if upper(curr) > upper(next)
A(j) = next;
A(j+1) = curr;
end
end
end
disp(A);
I do not quite understand why you do not want to use the in-built MATLAB "sort" function to achieve this. There is no need to reinvent the wheel. Also, the in-built functions are likely to be much more efficient and optimized. You could do case-insensitive sorting using the "sort" function by converting all characters to uppercase, like this:
[~,idx]=sort(upper(A))
out=A(idx)
0 comentarios
Ver también
Categorías
Más información sobre Shifting and Sorting Matrices en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!