这个循环有效,但有另一种方法在java中做循环吗?

时间:2012-09-05 21:51:27

标签: java loops if-statement boolean int

您好我正在学习循环,但是有更简单或另一种方法来循环吗? 我只是尝试不同的方式来玩循环,所以我可以更好地理解它。我会很感激。
非常感谢。

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;
            }
        }
    }
}

5 个答案:

答案 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,那么循环呢,你可以使用whilefordo while如果你想要,你可以使用go to运算符进行一些循环,但这不是一个好方法,如果你有任何问题,你可以问;)

答案 4 :(得分:-1)

如果你想要花哨,你可以使用xor交换变量,但我不推荐它,因为它可能会将你的代码遗漏给其他用户。

要交换a和b的值,您可以运行此代码

a ^= b; 
b ^= a;
a ^= b;

看起来您正在尝试对数组进行排序,因此我建议您使用Arrays.sort。

API为here

关于循环的使用 - 它完成了工作,但我不会重新发明轮子进行分类。