java 数组字母排序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 数组字母排序相关的知识,希望对你有一定的参考价值。
编写一个程序。将下列名称按字母顺序排列。
George
Albert
Tina
Xavier
Roger
Tim
William
<head>
<title>字符串排序 </title>
</head>
<body>
<script type="text/javascript">
var name = new Array("George
", "Albert
", "Tina", "Xavier","Roger","Tim
","William");
document.write("排序前:" + name + "<br><br>");
for(n = 0; n < 7; n++)
for(i = 1; i < 7; i++)
if(name[n] > name[n+i]) //JS的隐式类型转换,字符串之间比较大小根据它们所包含的字符依次比较大小,把字符转换成unicode编码即可。如a=97,A=65.
var stamp = name[n];
name[n] = name[n+i];
name[n+i] = stamp;
document.write("排序后:" + name);
</script>
</body>
</html> 参考技术B import java.util.*;
public class StringSort
public static void main(String[] args)
String[] str = new String[7];
str[0] = new String("George");
str[1] = new String("Albert");
str[2] = new String("Tina");
str[3] = new String("Xavier");
str[4] = new String("Roger");
str[5] = new String("Tim");
str[6] = new String("William");
TreeSet treeSet = new TreeSet();
for (int i = 0; i < 7; i++)
treeSet.add(str[i]);
Iterator it = treeSet.iterator();
while (it.hasNext())
System.out.println(it.next());
能排序 哈哈哈 不过底层是sun给解决了 参考技术C 数组转换为List,然后调用Java中集合的Collections.sort(list)方法 参考技术D public class aaa
public static void main(String []args)
String [] s = "George",
"Albert",
"Tina",
"Xavier",
"Roger",
"Tim",
"William";
String t;
for(int i = 0;i<7;i++)
for(int j=i;j<7;j++)
if(s[i].compareTo(s[j])>0)
t = s[i];
s[i]=s[j];
s[j]=t;
for(int i = 0; i < 7;i++)
System.out.println(s[i]);
本回答被提问者采纳
使用冒泡排序对Java中的名称数组按字母顺序排序
我一直在尝试解决此错误,但是我无法解决它。以下程序的目的是使用冒泡排序按字母顺序排列名称数组。例如,如果名称为[“ Bob Joe”,“ Bob Frank”和“ Bob Johnson”],则正确排序的数组将为[“ Bob Frank”,“ Bob Joe”,“ Bob Johnson”]。
我面临的主要挑战是比较name.charAt(0)之后的任意两个字符串。如果仅在1个特定的索引点比较任何2个字符串的字符,则我的代码有效。但是,如果如果两个字符串的索引0彼此相等,如果我试图使比较移到索引0以上,则我的程序将不再起作用。
下面概述了代码
public static void sortAlpha (String names[])
for (int i = 0 ; i < names.length - 1 ; i++)
for (int a = 0 ; a < names.length - 1 - i ; a++)
int length1 = names [a].length ();
int length2 = names [a + 1].length ();
int min = 1;
if (length1 > length2)
min = length2;
else
min = length1;
for (int b = 0 ; b < min ; b++)
if ((int) names [a].toLowerCase ().charAt (b) > (int) names [a + 1].toLowerCase ().charAt (b))
String tempName = names [a];
// sort:
names [a] = names [a + 1];
names [a + 1] = tempName;
break;
如果我只是将最小值默认设置为1,则代码将运行并完成其预期的工作。但是,如果最小值保持动态,程序将无法运行。我试图找出为什么会这样,以及解决方法是什么。任何帮助,将不胜感激!
答案
您可以简单地使用compareTo()和一个临时变量进行比较和存储
https://onlinegdb.com/Bk-iB-hs8
我已经通过上面的链接编写了代码
另一答案
检查此。
public static void sortAlpha(String names[])
for (int i = 0; i < names.length - 1; i++)
for (int a = 0; a < names.length - 1 - i; a++)
int length1 = names[a].length();
int length2 = names[a + 1].length();
int min = length1 > length2 ? length2 : length1;
for (int b = 0; b < min; b++)
if ((int) names[a].toLowerCase().charAt(b) > (int) names[a + 1].toLowerCase().charAt(b))
String tempName = names[a];
// sort:
names[a] = names[a + 1];
names[a + 1] = tempName;
break;
else if ((int) names[a].toLowerCase().charAt(b) == (int) names[a + 1].toLowerCase().charAt(b))
// if the letter is the same go for the next
continue;
else
// if it's already in the right position - stop.
break;
以上是关于java 数组字母排序的主要内容,如果未能解决你的问题,请参考以下文章