【问题标题】:Is my Bubble Sort implementation correct?我的冒泡排序实现是否正确?
【发布时间】:2016-05-12 21:31:46
【问题描述】:
public class MyBubbleSort {

public static void bubbleSort(int[] a, int n)   {

    int i, j, temp;

    for (i = 0; i <= (n-2); i++) {
        for (j = i + 1; j <= (n-1); j++) {
            if (a[j] < a[i])    {
                temp = a[i];
                a[i] = a[j];
                a[j] = temp;
            }
        }
    }
}
}

当我进行调试时,它给了我一个排序数组,但我只是想 100% 确定。

【问题讨论】:

标签: java bubble-sort


【解决方案1】:

你可以稍微整理一下代码:

  1. 使其扩展接口Sort,使用单一方法sort(int[] a, int n)
  2. MyBubbleSort 方法应该实现上述接口,而不是静态的。

  3. int ij 应在相应的 fordeclaration 中声明。

  4. temp 应在内部 if 内声明。
  5. 是否需要传入数组的长度是有问题的,因为这是 Java 数组类型的属性。传递长度的唯一时间是您打算对子数组进行排序。

【讨论】:

  • 当我在调试模式下运行 Main 方法时,它给了我一个排序数组,但我只是想确保它是通过冒泡排序而不是巧合地排序。
【解决方案2】:

你正在做一个正确的冒泡排序!在你的“if”语句中,如果两个相邻的值没有很好地排序,你就正确地交换了它们。这就是冒泡排序的原理:重复这个过程,直到你的数组被正确排序。 https://www.youtube.com/watch?v=lyZQPjUT5B4

但是您在代码中做了一些奇怪的事情!正如 zapl 在 cmets 中所说,您不需要此“n”参数,因为您可以简单地在方法中获取数组的大小。

也更喜欢使用“

public static void bubbleSort(int[] tab)   {
        int n = tab.length ; 
        for (int i = 0; i < n-1; i++) {
            for (int j = i + 1; j < n ; j++) {
                if (tab[j] < tab[i])    {
                    int temp = tab[i];
                    tab[i] = tab[j];
                    tab[j] = temp;
                }
            }
        }
    }

【讨论】:

    猜你喜欢
    • 2017-04-12
    • 1970-01-01
    • 2011-08-02
    • 2017-03-11
    • 2012-07-23
    • 2020-11-20
    • 1970-01-01
    相关资源
    最近更新 更多