找到这样的对数(i,j)的最有效算法是什么,使得反转的数量变得最小

时间:2015-02-24 15:40:04

标签: c++11 bubble-sort

假设我有一个N编号的数组未分类。要对数组进行排序,请使用以下代码:

for (int i = 1; i < n; i = i + 1)
{
 int j = i; 
 while (j > 0 && a[j] < a[j - 1])
   {
    swap(a[j], a[j - 1]);
    j = j - 1;
   }
}
据我所知,

被称为冒泡排序。为了减少交换函数的反转/调用次数,我可以预交换任何两个元素,比如它们有索引i和j,然后我执行实际的排序函数。 查找此类数量的对(i,j)以使反转次数变得最小的最有效算法是什么? 实际上这是一个Codeforces问题,我也经历了教程和许多公认的代码。但是我仍然难以理解它们背后的逻辑。既然我是一个新手程序员,那么有人可以从头开始向我解释这个过程吗?在此先感谢:)

0 个答案:

没有答案