java - 了解冒泡/插入排序

标签 java algorithm sorting

好吧,我与这些学校理论脱节了,但我正在努力让自己焕然一新。我阅读了算法并实现了它。这是代码

public int[] bubbleSort(int[] array)
{
    int swap_bucket;
    for (int i = 0; i < array.length; i++)
    {
        for (int j = i + 1; j < array.length; j++)
        {
            if (array[i] > array[j])
            {
                swap_bucket = array[i];
                array[i] = array[j];
                array[j] = swap_bucket;
            }
        }
    }

    return array;
}

这里是插入排序

public int[] InsertionSort(int array[])
{
    int swap_bucket;
    for (int i = 0; i < array.length; i++)
    {
        for (int k = i; ((k > 0) && (array[k] < array[k-1])); k--)
        {
            swap_bucket = array[k];
            array[k] = array[k-1];
            array[k-1] = swap_bucket;
        }
    }

    return array;
}

对我来说,两者看起来一样。我正在比较每个元素,当我找到它时,我会交换它……但看起来这两个实现或多或少是相同的。我是不是写错了?

最佳答案

是的,在我看来你编码的插入排序是错误的。

检查 Insertion Sort 上的实现

冒泡排序:在冒泡排序中,在一次迭代中,我们将元素与所有其他元素进行比较,如果条件(<或>)为真,则交换元素

鉴于

插入排序:在插入排序的迭代中,我们将焦点元素与其他元素进行比较,并将其放置在数组已排序部分的正确位置。

提示:研究这两种算法并了解何时进行交换将有助于您更好地理解差异。

关于java - 了解冒泡/插入排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18971441/

相关文章:

java - 航类时刻表算法

php - 以有效和简单的方式实现层次结构、父/子关系

algorithm - 为什么在未排序的数组中我更喜欢二进制搜索而不是线性搜索?

python - 按对象的类型排序

java - 如何以编程方式将Java中的bean添加到Spring中的app-context.xml中?

algorithm - 如何从一个联合的、离散的、概率分布函数中进行数值采样

java - Xtend 的 _field 命名和 SpringData 的存储库命名约定

linux - `sort -t' ' -rn +2 -3` 在此管道中做什么?

java - 尝试将文件上传到 Google Cloud Storage 时出现 FileNotFoundException

java - 无法在 SAXParser 中解析文件和处理程序