参考书籍《数据结构案例教程(C/C++版)》
第一章
应用实践
题目:利用所学C/C++语言知识,对一个整型数组a[n]编程实现一种排序算法,要求:
(1)利用随机函数生成10万个随机数存放到数组中。
(2)分析算法时间复杂度。
(3)测试程序执行时间。
作业:
1.实现使用冒泡排序算法,实现如下所示
2.当数据规模为10万时,程序运行使用400s;当数据规模为1万时,程序运行使用4.78s;当数据规模为1000时,程序运行使用0.051s。可以看出时间复杂度为O(n²)。
3.冒泡排序平均情况下时间复杂度是O(n²)
//----------------Guidance2.h----------------
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <iostream>
void SortArrayData(void);
double ComputeTime(void)
{
double AlgTime;
clock_t StartTime, EndTime;
StartTime = clock();
//the program that requires time computation
SortArrayData();
EndTime = clock();
AlgTime = (double)(EndTime - StartTime) / CLOCKS_PER_SEC;
std::cout << "the execution time is\n" << AlgTime << std::endl;
return AlgTime;
}
void SortArrayData(void)
{
// random generation
srand((unsigned)time(NULL));
int length = 10;
int a[10];
for (int i = 0; i < length; i++)
{
a[i] = rand();
}
// sort
for (int i = 0; i < length-1; i++)
{
for (int j = 0; j < length - 1 - i; j++)
{
if (a[j] > a[j + 1])
{
std::swap(a[j] ,a[j + 1]);
}
}
}
}
//----------------main.cpp----------------
#include <iostream>
#include "Guidance2.h"
using namespace std;
int main()
{
ComputeTime();
return 0;
}
参考资料:
C++ 实现十大排序算法
冒泡排序时间复杂度分析