【问题标题】:Is my bubble sort and selection sort properly implemented?我的冒泡排序和选择排序是否正确实施?
【发布时间】:2017-04-12 11:32:56
【问题描述】:

这是我所拥有的冒泡排序算法。

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 语句之后。

谢谢

【问题讨论】:

    标签: java bubble-sort selection-sort


    【解决方案1】:

    我已尝试纠正您的实现中的一些错误。

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

    【讨论】:

    • 非常感谢!我怎样才能将它们设置为正确打印出值的位置?
    • 所有内循环处理完成后,打印返回值或在函数末尾添加语句。
    猜你喜欢
    • 1970-01-01
    • 2015-02-14
    • 2015-04-25
    • 1970-01-01
    • 1970-01-01
    • 2016-11-01
    相关资源
    最近更新 更多