目录
一、计算的资源
程序运行时需要的资源有两种,即计算时间和存储时间。一个算法对这两个资源的使用程度可以用来衡量算法的优劣。
- 时间复杂度:程序运行所需的时间。
- 空间复杂度:程序运行所需要的存储空间。
可以用clock()函数统计程序运行的时间。
#include <bits/stdc++.h>
using namespace std;
int main(){
clock_t start, end;
start = clock();
...
end = clock();
cout << (double)(end - start) / CLOCK_PER_SEC << endl;
}
由于程序的运行是时间依赖于计算机的性能,不同的计算机结果不同,所以通常用程序执行的 “次数” 来衡量,例如执行了 n 次就记为O(n)。
下面给出一个例子:
Problem Description:
给你n个整数,请按从大到小的顺序输出其中前m大的数。
Input:
每组测试数据有两行,第一行有两个数n,m(0<n,m<1000000),第二行包含n个各不相同,且都处于区间[-500000,500000]的整数。
Output:
对每组测试数据按从大到小的顺序输出前m大的数。
思路是先对100万个数进行排序,然后输出前m大的数。
1、冒泡排序
首先用最简单的冒泡排序解决问题。
//#include <bits/stdc++.h>
#include <stdio.h>
using namespace std;
int a[1000001];
# define swap(a, b){int temp = a; a = b; b = temp;}
int m, n