为了获得任何可执行文件的执行时间,比方说a.out,我可以简单地写一下time ./a.out.这将输出实时,用户时间和系统时间.
是否有可能编写一个运行程序多次的bash脚本并计算并输出平均实际执行时间?
我用C++开发了Insertion Sort和Quicksort算法.现在,我打算创建至少四种Quicksort算法的变体.它们在选择数据透视的方式以及是否对小列表使用插入排序方面会有所不同.在Java或C#中,为避免代码重复和名称冲突,我将在单独的类文件中实现每个版本的Quicksort算法并使用继承.具体来说,我会创建以下类:
QuicksortFixedPivotQuicksortRandomPivotQuicksortFixedPivotInsertion- k使用插入排序对包含大多数元素的子数组进行排序QuicksortRandomPivotInsertion但是,根据我的理解,像Quicksort这样的"独立"算法通常不会在C++的类中实现.
下面是我最初的Quicksort实现.
quicksort.hpp
#pragma once
#include <vector>
namespace algorithms
{
void quicksort(std::vector<int> &list);
void quicksort(std::vector<int> &list, int left, int right);
int partition(std::vector<int> &list, int left, int right);
}
Run Code Online (Sandbox Code Playgroud)
quicksort.cpp
#include "quicksort.hpp"
namespace alg = algorithms;
void alg::quicksort(std::vector<int> &list)
{
alg::quicksort(list, 0, list.size() - 1);
}
void alg::quicksort(std::vector<int> &list, int left, int right)
{
if (left >= right)
return;
int oldPivot = alg::partition(list, left, right);
alg::quicksort(list, left, oldPivot - 1);
alg::quicksort(list, oldPivot …Run Code Online (Sandbox Code Playgroud)