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