Alphabetical Sorting (case insensitive)
23 次查看(过去 30 天)
显示 更早的评论
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 个评论
Stephen23
2018-4-19
编辑:Stephen23
2018-4-19
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.
回答(1 个)
Suraj Mankulangara
2018-4-23
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 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Shifting and Sorting Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!