数据结构(Course)1:基础知识

一、概论

1、逻辑+存储+算法

逻辑:线性表(表,栈,队列,串)+非线性结构(树+图)

存储:顺序、链接、索引、散列

抽象数据类型ADT<数据对象D,数据操作P>

先定义逻辑结构(数据对象及其关系),再定义运算(数据操作)。

2、算法特性

 穷举法(顺序找K值)、回溯、搜索(树和图遍历)、递归分治(二分找K值、快速排序)、贪心法、动态规划(最短路Floyd算法)

//二分法找K值
template <class Type> int Binsearch(vector<Item<Type>*>& dataList, int length, Type k)
{
	int low = 1, high = length, mid;
	while (low <= high)
	{
		mid = (low + high) / 2;
		if (k < dataList[mid]->getKey())
			high = mid - 1;//右缩检索空间
		else if (k>dataList[mid] - > getKey())
			low = mid + 1;//左缩检索空间
		else return mid;
	}
	return 0;
}

3、算法效率与度量

加法规则:f1(n)+f2(n)=O(max(f1,f2))  顺序结构,if,switch

乘法规则: f1(n)*f2(n)=O(f1*f2) for while 结构

常数阶;二分法:对数阶;for循环:线性阶;两个for循环:平方阶

推到大O阶方法:

1、常数1取代所有加法常数

2、只保留最高阶

猜你喜欢

转载自blog.csdn.net/try_again_later/article/details/81180910