如果按一种策略减少的定义是:
“每次迭代时要解决的问题大小稳定减少一个元素的策略。”
这是否意味着插入排序不会减少一个算法?因为它需要比较已经排序的所有元素,因此需要多次迭代来对每个元素进行排序。
或者定义是否会引用这样一个事实:它会逐个遍历每个元素,逐个排序每个元素?
答案 0 :(得分:1)
根据该定义,我会说插入排序不是逐个算法,因为你已经提到了。也就是说,在较小的数据子集上传递一次算法后,您无法调用插入排序方法,因为您需要所有数据进行插入。
我认为这个定义并没有提到“一个算法逐个遍历每个元素”的事实,因为大多数涉及数组的算法都会这样做,而是将问题变成一个较小的子问题,可以在完全相同的方式,但数据较少。冒泡排序是一种逐一减少算法,因为在每次传递中我们都将最大元素放在适当位置,然后我们以完全相同的方式对其余N-1
元素进行冒泡排序。