我的冒泡排序和选择排序是否正确实施?

Is my bubble sort and selection sort properly implemented?

这是我的冒泡排序算法。

public void bubbleSort(int[] arr) {
  boolean swapped = true;
  int j = 0;
  temp = 0;

while(swapped) {
  swapped = false;
  j++;

for(int i = 0; i < arr.length; i++) {
  if (arr[i] > arr[i + 1]) {
    temp = arr[i];
    arr[i] = arr[i + 1];
    arr[i + 1] = temp;
    swapped = true;
  }
 }
}
}

对于选择排序:

public int[] selectionSort(int[] arr) {
  int i = 0;
  int j = 0;
  int minValue = 0;
  int minIndex = 0;
  int temp = 0;

for(i = 0; i < arr.length - j; j++) {
   minValue = arr[i];
   minIndex = i;

for(j = i; i < arr.length; j++) {
  if (minValue < arr[i]) {
    minValue = arr[j];
    minIndex = j;
  }
}

if (minValue < arr[i]) {
   temp = arr[i];
   arr[i] = arr[i + 1];
   arr[i + 1] = temp;
}
}
return arr;
}

不确定这些实现。 当我添加 System.out.println(arr[i]);在那里,冒泡排序的数字如下: 4个 3个 2个 1个 3个 2个 1个 2个 1个 1个 [我@6d06d69c

放在第一个 if 语句之后。

现在当我创建一个 System.out.println(arr[i]);对于选择排序,结果为: 1个 2个 3个 4个 5个 [我@6d06d69c

放在第二个 if 语句之后。

谢谢

您的实现中存在一些错误,我已尝试更正这些错误。

public void bubbleSort(int[] arr) {
  boolean swapped = true;
  int j = 0;
  temp = 0;

while(swapped) {
  swapped = false;
  j++;

for(int i = 0; i < arr.length-j; i++) {
  if (arr[i] > arr[i + 1]) {
    temp = arr[i];
    arr[i] = arr[i + 1];
    arr[i + 1] = temp;
    swapped = true;
  }
 }
}
}

public int[] selectionSort(int[] arr) {
  int i = 0;
  int j = 0;
  int minValue = 0;
  int minIndex = 0;
  int temp = 0;

for(i = 0; i < arr.length - 1; i++) {
   minValue = arr[i];
   minIndex = i;

for(j = i+1; j < arr.length; j++) {
  if (minValue < arr[j]) {
    minValue = arr[j];
    minIndex = j;
  }
}

if (minValue < arr[i]) {
   temp = arr[i];
   arr[i] = minValue;
   arr[minIndex] = temp;
}
}
return arr;
}