“C++”环境下的算法探讨

时间:2022-10-11 06:31:53

“C++”环境下的算法探讨

摘要 本文通过一个实例揭示如何将算法原理和程序设计相互结合;如何借助程序开发实践来进一步理解二分法求近似根算法的实质,从而深刻理解算法原理,增加学生成功建构数学概念、解决数学问题的可能性,进而使以学生发展为本的教育理念得以实现。

关键词算法;二分算法;教学; c++

中图分类号TP393 文献标识码A 文章编号 1674-6708(2010)22-0210-01

“现代意义上的‘算法’通常指可以用计算机来解决的某一类问题的程序或步骤,这些程序或步骤必须是明确和有效的,而且能够在有限步之内完成”[1]。算法实际上就是解决问题的一种程序性方法,它通常指向某一个或一类问题,而解决的过程是程序性和构造性的。计算机解决问题的过程就是对算法的执行过程,但这个算法必须是计算机能理解的语言描述,而我们采取“C++”这种程序设计语言就是计算机可以理解的语言。

C++是C的一个扩充版本。C是于1978年在贝尔实验室诞生的。开发C的目的是为了创造一种可以在多种平台上使用的简单语言(比汇编和机器代码简单…)。后来在80年代早期C被扩充为C++用于创造一种面向对象的语言。O(bject,对象)O(riented,基于)P(rogramming,编程)是一种用类来构造程序的编程方式。类型标识符用以区分main函数及后继类。OOP在方法上,C++在实现上使编写极为复杂的图形应用环境(例如Windows,Macintosh…)成为可能。

以下我们以一个二分查找法实例探讨如何在C++中应用算法教学:

二分法的概念:一般地,对于函数f(x),如果存在实数c,当x=c是f(c)=0,那么把x=c叫做函数f(x)的零点。解方程即要求f(x)的所有零点。先找到a、b,使f(a),f(b)异号,说明在区间(a,b)内一定有零点,然后求f[(a+b)/2],现在假设f(a)0,a

假如有一组数为3,12,24,36,55,68,75,88要查给定的值24.可设3个变量front,mid,end分别指向数据的上界,中间和下界,mid=(front+end)/2。

1)开始令front=0(指向3),end=7(指向88),则mid=3(指向36)。因为mid>x,故应在前半段中查找。

2)令新的end=mid-1=2,而front=0不变,则新的mid=1。此时x>mid,故确定应在后半段中查找。

3)令新的front=mid+1=2,而end=2不变,则新的mid=2,此时a[mid]=x,查找成功。

如果要查找的数不是数列中的数,例如x=25,当第三次判断时,x>a[mid],按以上规律,令front=mid+1,即front=3,出现front>end的情况,表示查找不成功。

例:在有序的有N个元素的数组中查找用户输进去的数据x。

算法如下:

1)确定查找范围front=0,end=N-1,计算中项mid(front+end)/2。

2)若a[mid]=x或front>=end,则结束查找;否则,向下继续。

3)若a[mid]x,说明待查找的元素值只可能在比中项元素小的范围内,则把mid-1的值赋给end,并重新计算mid,转去执行步骤2。

代码:

#include

#define N 10

using namespace std;

int main()

{

int a[N],front,end,mid,x,i;

cout

for(i=0;i

cin>>a[i];

cout

cin>>x;

front=0;

end=N-1;

mid=(front+end)/2;

while(front

{

if(a[mid]

if(a[mid]>x)end=mid-1;

mid=(front+end)/2;

}

if(a[mid]!=x)

cout

else

cout

return 0;

}

总之,在信息技术创设的数学学习环境中,操作、观察、试验、发现等过程变得具体而清晰,通过实例可以让抽象的数学算法解决一些生活中的实际问题,学生就会在轻松又愉快的环境中学会,没有盲目填鸭之感。还能帮助他们从具体的现象和事物中,获得对事物之间关系的认识,这是一种受益终生的能力。

参考文献

[1]人民教育出版社、课程教材研究所.普通高中课程标准实 验教科书(A版)数学3.第1版.人民教育出版社,2004,5.

[2]C++面向对象与VisualC++程序设计案例教程.北京大学出 版社,2009,3.

上一篇:浅析技术创新在企业生产经营管理中的作用 下一篇:浅谈如何提高调度员事故处理能力