Я хочу создать программу, которая использует вектор, чтобы отсортировать его по причинам тестирования. Поэтому я хочу рассчитать время процессора по эталону, который сортирует вектор в определенное количество раз. Таким образом, исходный вектор должен оставаться постоянным, а затем использовать другой вектор, чтобы его можно было сортировать.Передача вектора по значению
Так что я сделал это ...
#include <iostream>
#include <vector>
#include <random>
#include <chrono>
using namespace std;
typedef vector<int> intv;
int main(){
intv vi;
// Stuff to create my vector with certain characteristics...
intv vii=vi;
cout << "Size: \n";
cin >> tt ;
for(i=0; i<tt; ++i){
tb=sort(t,vii);
m=m+tb;
vii=vi;
}
m=m/tt;
cout << "BS" << m << "\n";
}
Так я передаю вектор по ссылке, и сделайте копию для каждого сортировки, так что я могу сортировать его снова. Как я могу сделать это лучше? Лучше ли передавать его по значению, и в этом случае, может ли кто-нибудь предоставить мне минимальный пример наилучшего способа сделать это?
рода является основной функцией сортировки пузырь:
double sort(int t, intv &vii){
vii.reserve(t);
bool swapped=true;
int a;
auto t0 =chrono::high_resolution_clock::now();
while (swapped==true){
for (int i=1; i<t; ++i){
swapped=false;
if (vii[i-1]>vii[i]){
a=vii[i];
vii[i]=vii[i-1];
vii[i-1]=a;
swapped=true;
}
}
t=t-1;
}
auto t1 = chrono::high_resolution_clock::now();
double T = chrono::duration_cast<chrono::nanoseconds>(t1-t0).count();
return T;
}
К сожалению, это была опечатка от копирования фрагментов кода. – D1X
Есть ли причина, по которой вы не используете алгоритм сортировки STL? – dspfnder
Для целей тестирования. Действительно, я не только использую этот алгоритм сортировки. – D1X