同样一个数组(拷贝的数组)两次排序,所用的时间为什么会不一样呢?(好像冒泡排序的优化,跟插入排序有些相似呢)
来源:
MrJean
2017-01-15
#include "SortTestHelper.h"
int main(void)
{
void BubbleSort(int* arr ,int n);
void BubbleSortAdvance(int* arr,int n);
int n = 100000;
int *arr = SortTestHelper::generateRandom(n,1,100000);
int *arr1 = SortTestHelper::copyIntArray(arr,n);
int *arr2 = SortTestHelper::copyIntArray(arr,n);
SortTestHelper::testSort("BubbleSort",BubbleSort, arr,n);
SortTestHelper::testSort("BubbleSort",BubbleSort,arr1,n);
SortTestHelper::testSort("BubbleSortAdvance",BubbleSortAdvance,arr2,n);
return 0;
}
void BubbleSort(int* arr,int n)
{
for(int i = 0;i < n;i++)
{
for(int j = 1;j < n - i;j++)
{
if(arr[j - 1] > arr[j])
swap(arr[j - 1],arr[j]);
}
}
}
void BubbleSortAdvance(int* arr,int n)
{
for(int i = 0;i < n;i++)
{
int j = 0;
int temp = arr[j];
for(int j = 0;j < n - i - 1;j++)
{
if(temp > arr[j + 1])
{
// temp = arr[j];
arr[j] = arr[j+1];
}
else
{
arr[j] = temp;
temp = arr[j + 1];
}
arr[j + 1] = temp;
}
}
}BubbleSort : 36.466s
BubbleSort : 36.384s
BubbleSortAdvance : 30.072s
写回答
1回答
-
程序在我们的计算机上运行的时候,除了我们自己的程序本身的算法性能外,计算机当时的状态,如后台正在运行的程序等,都会影响程序的执行速度。所以,近乎不可能每次执行程序运行的时间是一样的:)
032017-01-16
相似问题