Дали простенькое задание - написать сравнение алгоритмов сортировки.
Писал на C++/Qt4. И столкнулся с необъяснимым: при замере времени исполнения алгоритма с помощью QTime.start() [алгоритм] QTime.elapsed() если ставить чекбокс, чтобы выводить элементы массива в QListWidget'ы - засеченное время сокращается примерно на 30-40 мс (или меньше, в зависимости от размера массива).
код
void main_form::start()
{
int arraySize = spinBox->value();
int *mas = new int[arraySize];
qsrand(QDateTime::currentDateTime().toTime_t());
for(int i=0; i<arraySize; i++)
mas[i]=qrand()%10000;
int elapsedTime = 0;
QString sortName;
listWidget->clear();
listWidget_2->clear();
if(checkBox->checkState()==Qt::Checked)
for(int i=0; i<arraySize; i++)
{
new QListWidgetItem(QString::number(mas[i]),listWidget);
}
QTime time;
//DEBUG
qDebug()<<"Start: " << time.currentTime().toString("hh:mm:ss.zzz");
//ВОТ ТУТ ЗАСЕКАЮ
time.start();
switch(comboBox->currentIndex())
{
case 0: sortName = tr("Бульбашка");
bubbleSort(mas, arraySize);
break;
case 1: sortName = tr("Метод вставок");
insertionSort(mas, arraySize);
break;
case 2: sortName = tr("Метод Хоара");
quickSort(mas, 0, arraySize-1);
break;
}
//И ТУТ ПОЛУЧАЮ ВРЕМЯ ИСПОЛНЕНИЯ
elapsedTime = time.elapsed();
//DEBUG
qDebug()<<"Finish: " << time.currentTime().toString("hh:mm:ss.zzz");
if(checkBox->checkState()==Qt::Checked)
for(int i=0; i<arraySize; i++)
{
new QListWidgetItem(QString::number(mas[i],10),listWidget_2);
}
tableWidget->setSortingEnabled(false);
tableWidget->insertRow(tableWidget->rowCount());
QTableWidgetItem* newItemName = new QTableWidgetItem(sortName);
QTableWidgetItem* newItemCount = new QTableWidgetItem(QString::number(arraySize));
QTableWidgetItem* newItemTime = new QTableWidgetItem(QString::number(elapsedTime));
if(elapsedTime==0)elapsedTime=1;
QTableWidgetItem* newItemTimePerSec = new QTableWidgetItem(QString::number(arraySize/elapsedTime));
tableWidget->setItem(tableWidget->rowCount()-1, 0, newItemName);
tableWidget->setItem(tableWidget->rowCount()-1, 1, newItemCount);
tableWidget->setItem(tableWidget->rowCount()-1, 2, newItemTime);
tableWidget->setItem(tableWidget->rowCount()-1, 3, newItemTimePerSec);
tableWidget->setSortingEnabled(true);
}
В чём загвоздка?
Ответ на:
комментарий
от Dendy
Ответ на:
комментарий
от Dendy
Ответ на:
комментарий
от Chaser_Andrey
Ответ на:
комментарий
от Dendy
Ответ на:
комментарий
от mannaz
Ответ на:
комментарий
от Dendy
Ответ на:
комментарий
от Dendy
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум QSqlQueryModel как это должно работать? (2020)
- Форум [QT] QTableWidget с картинками (2010)
- Форум SMTP клиент - разрывы в тексте письма. (2013)
- Форум Забавное поведение при отображении QAbstractItemModel на QSortFilterProxyModel (2013)
- Форум Проблема с QTreeView (2024)
- Форум QTime пустая строка (2024)
- Форум Мистика (2015)
- Форум Мистика (2005)
- Форум Мистика... :) (2006)
- Форум Мистика (2005)