为什么我的冒泡排序方法不起作用?

时间:2015-03-15 08:33:03

标签: java arrays sorting

抱歉,我还在学习编程。 Java只是停止并且似乎正在处理某些事情。它说"构建Java应用程序Javaapplication2"然后就坐在那里什么都不做我做了什么导致这个?

package javaapplication2;

public class JavaApplication2 {

    public static void main(String[] args) {
       int a [] = {1,2,3};
       int c [] =  Sortarray.sortlowhigh(a);

       int i = 0;
      while (i<c.length){

          System.out.println("array is" + c[i]);
        i++;
      }
    }

}

package javaapplication2;
public class Sortarray {
public static int[] sortlowhigh(int a[])
    {
        int i = 0;
       int j = 0;
      while(j<a.length){

        while(i<a.length){
            if (a[i]>a[i+1]){
          /* store low  value in temp*/
             int temp = a[i+1];
          /* assign low value  to be the higher value*/
             a[i+1] = a[i];
          /* assign the old higher value to be the lower value stored in temp*/
             a[i]=temp;

            }
            j++;
        }

    } 
       return a;
}
}

我的代码在上面。不久之前我写了一个排序并删除重复方法现在我想把它们放到一个类中,但我做错了。请帮忙。谢谢。

4 个答案:

答案 0 :(得分:0)

在sortlowhigh while循环中你有我,我&lt; a.lenght是第二个循环的条件,它将一直持续到i>&gt; = a.length但我永远不会改变它总是保持为0.

答案 1 :(得分:0)

/*change your code as given*/
public static int[] sortlowhigh(int a[]){     
int i = 0;
 int j = 0; int temp=0;
 while(j<(a.length-1))
   {
           i=0;
           while(i<a.length-j-1)
           {
               if(a[i]>a[i+1])/* For descending order use < */
               {

                   temp = a[i];
                   a[i]=a[i+1];
                   a[i+1] = temp;
               }
               i++;
           }
           j++;
   }
 return a;
}

答案 2 :(得分:0)

我尝试你的代码,我可以看到你在Sortarray类中有一个无限循环。变量i永远不会增加。 试试这段代码:

    public static int[] sortlowhigh(int a[])
    {
        int i = 0;
        int j = 0;
        int temp;
        while(j< (a.length -1) ){
           i = 0;
            while(i< (a.length - j - 1)){
                if (a[i] > a[i+1]){
      /* store low  value in temp*/
                    temp = a[i];
      /* assign low value  to be the higher value*/
                    a[i] = a[i+1];
      /* assign the old higher value to be the lower value stored in temp*/
                    a[i+1]=temp;
                }
               i++;
            }
            j++;
        }
        return a;
    }

答案 3 :(得分:-1)

当j的值递增时,你应该重置i的值。 数组的大小为3.但是i的值已经是3.所以它在[i + 1]中得到了垃圾值。 希望这可以帮助。我没有尝试过代码。