c++ - 计算快速排序算法中的基本操作?

标签 c++ algorithm code-analysis

我编写了一个有效的快速排序程序。我需要包括一个计算迭代次数的计数器。在类里面我们讨论了算法并得出结论,元素比较是基本操作。但是,我不知道把柜台放在哪里。我似乎无法获得正确的输出。我已经包含了我的代码,谢谢!

void partition( vector<int> & S, int low, int high, int & pivotpoint )
{
vector<int> U;
int pivotitem = S.at(low);
int j = low;
int i;
for( i = low + 1; i <= high; i++)
    if( S.at(i) < pivotitem)
    {
        j++;
        swap( S[i], S[j] );
    }
pivotpoint = j;
swap( S[low], S[pivotpoint] );
}

void quicksort( vector<int> & S, int low, int high, int &basic_ops )
{
int pivotpoint = low;
if( high > low) 
{   
    partition( S, low, high, pivotpoint );
    quicksort( S, low, pivotpoint -1, basic_ops );
    quicksort( S, pivotpoint + 1, high, basic_ops );
}   
}

最佳答案

  1. 将快速排序调用为快速排序(数组,0,长度 -1,指向计数器的指针)

    void quicksort( vector<int> & S, int low, int high, int &basic_ops )
    
    {
    
    int pivotpoint = low;
    if( high > low) 
    {
    
        *basic_ops += high - low;
    
        partition( S, low, high, pivotpoint );
    
        quicksort( S, low, pivotpoint -1, basic_ops );
    
        quicksort( S, pivotpoint + 1, high, basic_ops );
    
    }
    
    }
    

关于c++ - 计算快速排序算法中的基本操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14929367/

相关文章:

c++ - 如何为泛型 std::function 的参数声明 "basic"类型

c++ - 在 MFC 应用程序中动态创建控件

algorithm - 一道完全二叉树的算法题

c - 如何显示合并排序的时间性能?

c++ - 模棱两可的期望值

c - 有没有比这个 C 代码更短的方法来查找数组的长度?

视频游戏中纹理流的 C++ 内存管理

c++ 在声明中不熟悉使用 ':'

c++ - 如何正确重写 ASSERT 代码以在 msvc 中传递/分析?

java - 用于查找代码中可能存在问题的工具