您好我正在学习循环,但是有更简单或另一种方法来循环吗?
我只是尝试不同的方式来玩循环,所以我可以更好地理解它。我会很感激。
非常感谢。
private char guesses [] = new char[26];
void sort() {
boolean doMore = true;
while(doMore) {
doMore = false;
for(int i = 0; i < guesses.length - 1; i++) {
if(guesses[i] > guesses[i+1]) {
char temp = guesses[i];
guesses[i] = guesses[i+1];
guesses[i+1] = temp;
doMore = true;
}
}
}
}
答案 0 :(得分:1)
不,这是非常规范的泡泡排序。你可以改变它的另一种方法是使用“do ... while”循环,如:
void sort() {
boolean doMore;
do {
doMore = false;
for(int i = 0; i < guesses.length - 1; i++) {
if(guesses[i] > guesses[i+1]) {
char temp = guesses[i];
guesses[i] = guesses[i+1];
guesses[i+1] = temp;
doMore = true;
}
}
} while (doMore);
答案 1 :(得分:0)
此算法将您的数组排序为最小到最大。有很多其他方法可以做到这一点(你的方法被称为冒泡排序,并没有很多其他方法来实现它而不是你所展示的),其中一些你可以阅读here 。请注意,您始终可以使用java.util.Arrays.sort(int[] a)
,它使用双轴快速排序。
答案 2 :(得分:0)
不是一个java男孩,但如果是我,我会把for循环放在它自己的函数中让它返回true,你当前正在设置domore然后
do-while {SomeSuitableFunctionName};
会让你的代码更容易理解。
答案 3 :(得分:0)
首先你的排序算法不太好,它需要大约n!时间,有非常好的算法,n * log(n)时间,如果它对你有意思,你可以检查一下
http://en.wikipedia.org/wiki/Quicksort,那么循环呢,你可以使用while
,for
,
do while
如果你想要,你可以使用go to
运算符进行一些循环,但这不是一个好方法,如果你有任何问题,你可以问;)
答案 4 :(得分:-1)
如果你想要花哨,你可以使用xor交换变量,但我不推荐它,因为它可能会将你的代码遗漏给其他用户。
要交换a和b的值,您可以运行此代码
a ^= b;
b ^= a;
a ^= b;
看起来您正在尝试对数组进行排序,因此我建议您使用Arrays.sort。
API为here
关于循环的使用 - 它完成了工作,但我不会重新发明轮子进行分类。