Java Bubblesort不';分类不当

Java Bubblesort不';分类不当,java,sorting,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(myArra

我已经编译并运行了一些代码。假设它将值从最小值排序到最大值。有人能帮我找到代码中发生了什么,并且没有正确排序吗?我知道这些数字

-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;
}
intmyarray[]={1,6,-1,7,83,19,-3,6,2,4,6,32,66,-9};
int n=myArray.length;
myArray=doop(myArray);
对于(int i=0;i对于(int i=n-1;i>=0;i--){
int j=i;
int min=myArray[i];
而((j>0)&(myArray[j-1]
intmyarray[]={1,6,-1,7,83,19,-3,6,2,4,6,32,66,-9};
int n=myArray.length;
myArray=doop(myArray);
对于(int i=0;i对于(int i=n-1;i>=0;i--){
int j=i;
int min=myArray[i];
而((j>0)&(myArray[j-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;
}
私有静态int[]doop(int[]myArray)
{
int n=myArray.length;

对于(int i=n-1;i>=0;i--) { 对于(int j=n-1;j>0;j--) {
如果(myArray[j]这看起来更像是插入排序而不是冒泡排序(inti=n-1;i>=0;i--),那么myArray[j]=min;应该在这段时间内(inti=n-1;i>=0;i--)会发生什么?您应该继续重做代码
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;
}