数据结构与算法-揭秘
什么是数据结构?
常用的有哪些数据结构?
什么是算法?
怎样是评价一个算法的好坏?
2、实现算法所使用的计算机语言。实现算法的语言级别越高,其执行效率相对越低。
3、所使用的语言的编译器/解释器。一般而言,编译的执行效率高于解释,但解释具有更大的灵活性。
4、所使用的操作系统软件。操作系统的功能主要是管理计算机系统的软件和硬件资源,为计算机用户方便使用计算机提供一个接口。各种语言处理程序如编译程序、解释程序等和应用程序都在操作系统的控制下运行。
评价运行时间就是一个算法时间复杂度, 一个算法的时间复杂度(Time Complexity)是指该算法的运行时间与问题规模的对应关系。
算法中的基本操作一般是指算法中最深层循环内的语句,因此,算法中基本操作语句的频度是问题规模n的某个函数f(n),记作:T(n)=O(f(n))。其中“O”表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,或者说,用“O”符号表示数量级的概念。 这些 都只是一些理论的概念,我们这里用计时器来证明这个理论概念。
如:
①x=n; /*n>1*/
y=0;
while(y < x)
{
y=y+1; ①
}
从理论上分析这是一重循环的程序,while 循环的循环次数为 n,所以,该程序段中语句①的频度是 n,则程序段的时间复杂度是 T(n)=O(n) 。
评价运行时间就是一个算法时间复杂度, 一个算法的时间复杂度(Time Complexity)是指该算法的运行时间与问题规模的对应关系。
算法中的基本操作一般是指算法中最深层循环内的语句,因此,算法中基本操作语句的频度是问题规模n的某个函数f(n),记作:T(n)=O(f(n))。其中“O”表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,或者说,用“O”符号表示数量级的概念。 这些 都只是一些理论的概念,我们这里用计时器来证明这个理论概念。
如:
①x=n; /*n>1*/
y=0;
while(y < x)
{
y=y+1; ①
}
从理论上分析这是一重循环的程序,while 循环的循环次数为 n,所以,该程序段中语句①的频度是 n,则程序段的时间复杂度是 T(n)=O(n) 。
由此证明,其中算法的时间复杂度确实是接近于O(n²)
③x=n; /*n>1*/
y=0;
while(x >= (y+1)*(y+1))
{
y=y+1; ①
}
这是一重循环的程序,while 循环的循环次数为 n,所以,该程序段中语句①的频度是 n,则程序段的时间复杂度是 T(n)=O(√n) 。