好吧,我与这些学校理论脱节,但我正在努力让自己焕然一新。我读了算法并实现了它。这是代码
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;
}
这是InsertionSort
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;
}
对我而言,两者看起来都一样。我正在比较每个元素和我找到它的那一刻,我交换它..但看起来两个实现都或多或少相同。我编码错了吗?
答案 0 :(得分:4)
是的,在我看来,您编码插入排序错误。
上的实施情况冒泡排序:在冒泡排序中在迭代中我们将元素与所有其他元素进行比较,如果条件(&lt;或&gt;)为真,那么我们交换元素
,而
插入排序:在插入排序的迭代中,我们将焦点中的元素与其他元素进行比较,并将其放置在数组的已排序部分中的正确位置。
提示:查看两种算法并查看交换何时完成将有助于您更好地理解差异。