一,排序基础
1,简介:
排序: 按照指定顺序进行排序;
分类:
- 内部排序:将所要排序的处理的数据都加载到内存中进行排序,主要有:
1.1,插入排序:直接插入排序,希尔排序
1.2,选择排序:简单选择排序,堆排序
1.3,交换排序:冒泡排序,快速排序
1.4,归并排序
1.5,基数排序(桶排序) - 外部排序:数据量过大,无法在内存操作,需要借助外部存储完成排序;
2,算法复杂度
2.1,度量程序执行时间的两种方法:
- 事后统计法:运行之后,统计花费的时间;(不靠谱,运行与硬件有关)
- 事前估算法:分析算法的时间复杂度预判;
2.2,时间频度:
时间频度: 算法花费的时间与算法中语句的执行次数成正比,一个算法中语句执行的次数称为语句频度或时间频度,用T(n)表示;
//计算1->100和,使用for循环计算需要100+1次调用for
for(int i=1;i<=100;i++){
total+=i;
}
T(n)=100+1;
//直接计算,只需要调用一次方法
total=(1+end)*end/2;
T(n)=1;
注: 随着n的增大,低次项忽略常数项,高次项忽略低次项,系数可忽略;