Bubblesort没有正确排序

时间:2015-05-03 16:49:57

标签: java sorting

我有一些我编译和运行的代码。假设将值从最小值排序到最大值。有人可以帮我找到代码中发生的事情,而不是让它排序正确吗?我得到这些数字

-9  -3  -1  1  6  7  83  19  2  6  4  6  32  66 

有人可以帮助我并告诉我代码有什么问题吗?谢谢!

int myArray[] = {1, 6, -1, 7, 83, 19, -3, 6, 2, 4, 6, 32, 66, -9};
int n = myArray.length;
myArray = doop(myArray);
for (int i = 0; i < n; i++) {
    System.out.println(myArray[i]);
}

private static int[] doop(int[] myArray) {
  int n = myArray.length;
  int swap;
  for (int i = n - 1; i >= 0; i--) {
      int j = i;
      int min = myArray[i];
      while ((j > 0) && (myArray[j - 1] < min)) {
          myArray[j] = myArray[j - 1];
          j = j - 1;
      }
      myArray[j] = min;
  }
  return myArray;
}

2 个答案:

答案 0 :(得分:1)

在冒泡排序中,您必须仅比较相邻元素并遍历数组。重复这个n-1次,您的数组将被排序,因此正确的代码是:

private static int[] doop(int[] myArray) 
{
 int n = myArray.length;     
 for (int i = n - 1; i >= 0; i--) 
 {
 for(int j=n-1;j>0;j--)
 {
  if(myArray[j]<myArray[j-1])
  {
     //swapping the elements
     myArray[j]=myArray[j]^myArray[j-1];
     myArray[j-1]=myArray[j]^myArray[j-1];
     myArray[j]=myArray[j]^myArray[j-1];
  }   
 }
 }
return myArray;
}

答案 1 :(得分:-1)

{{1}}