同样一个数组(拷贝的数组)两次排序,所用的时间为什么会不一样呢?(好像冒泡排序的优化,跟插入排序有些相似呢)
来源:
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
相似问题