1.时间复杂度
如果一个操作和样本数据量没有关系,每次都是固定时间内完成的操作,叫做常数操作
时间复杂度为一个算法流程中,常数操作数量的一个指标。常用O(读作big o)来表示
在表达式中只要高阶项,不要低阶项,也不要高阶项的系数,剩下部分为多少,那么时间复杂度为O(多少)。
例子:一个算法要进行 1+2+….n次操作 最后能得出时间复杂度为O(n^2)
2.额外空间复杂度
一个算法中需要开辟多少个额外空间
比如 int I,int j,int temp……开辟了常数级别的额外空间,额外空间复杂度为O(1)
3.冒泡排序
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
int *a=new int[n];
for(int i=0;i<n;i++){
cin>>a[i];
}
for(int i=0;i<n-1;i++)
for(int j=0;j<n-1-i;j++)
if(a[j]>a[j+1]){
int temp =a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
for(int i=0;i<n;i++){
cout<<a[i]<<" ";
}
cout<<endl;
delete []a;
return 0;
}
//给你一个n代表有n个数字,给出这n个数字,然后你需要使用冒泡排序将这些数字从小到大排好。
//输入描述:
//第一行输入一个n,代表有n个数字
//第二行输入n个数
//输出描述:
//输出排序好后的n个数
//示例1
//输入
//4
//4 3 2 1
//输出
//1 2 3 4
4.选择排序
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
int *a=new int[n];
for(int i=0;i<n;i++)
cin>>a[i];
for(int i=0;i<n-1;i++){
int minIndex=i;
for(int j=i+1;j<n;j++)
minIndex=a[j]<a[minIndex]?j:minIndex;
int temp=a[i];
a[i]=a[minIndex];
a[minIndex]=temp;
}
for(int i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
delete []a;
return 0;
}
//给你一个n代表有n个数字,然后你需要使用选择排序将这些数字从小到大排好。
//输入描述:
//第一行输入一个n,代表有n个数字
//第二行输入n个数
//输出描述:
//输出排序好后的n个数
//示例1
//输入
//4
//4 3 2 1
//输出
//1 2 3 4