3.4算法和数据结构3.4.1算法3.4.2数据结构23.4算法和数据结构3.4.1算法33.4算法和数据结构计算机求解问题的步骤(1)确定并理解问题;(2)寻找解决问题的方法与步骤,并将其表示成算法(Algorithm);(3)使用某种程序设计语言描述该算法(编程),并进行调试;(4)运行程序,获得问题的解答;(5)进行评估,改进算法和程序43.4算法和数据结构1.什么是算法?53.4算法和数据结构算算算算算算算算算算算算算例:有三个硬币,其中一个是伪造的,另两个是真的,伪币与真币重量略有不同。现在提供一座天平,如何找出伪币呢?分析:方法明确而有序按提供的条件进行操作任何人均可仿照进行(共享智能)开始C是伪币B是伪币A是伪币A=B?A=C?是否否是63.4算法和数据结构关于算法的三方面问题如何确定算法(算法设计)?如何表示算法(算法表示)?如何使算法更有效(算法分析)?73.4算法和数据结构2.算法设计举例83.4算法和数据结构例:对整数进行排序问题:任给一组(n个)整数,将它们从小到大进行排序粗略的思路:①从所有整数中选一个最小的,作为已排序的第一个数②从剩下未排序整数中选最小的数,添加到已排序整数的后面③反复执行步骤②,直到所有整数都处理完毕进一步细化:把待排序的整数放在一个数组A中,每个整数是数组A中的一个元素:A[1],A[2],A[3],···],A[n],排好序的元素在A的前面部分,无序的元素留在后面,每“循环”一次,有序部分增加1个元素,无序部分减少1个元素每次“循环”只需在数组的无序元素部分选出最小的数反复进行n-1次即可得到排序后的结果93.4算法和数据结构“直接选择排序”算法举例2345789第6次循环后,排序结束2937845与首元素交换,第1次循环结束4937825数组的初态,全部是未排序元素4937825在未排序元素中确定最小数位置2397845与首元素交换,第2次循环结束2937845在未排序元素中确定最小数位置2347895与首元素交换,第3次循环结束2397845在未排序元素中确定最小数位置103.4算法和数据结构“直接选择排序”算法的描述将原始数据放在数组A中;设置i的初值为1,循环执行下列操作,直到i=n:{确定A[i]到A[n]中最小整数的位置,设为j;交换A[i]和[j];i=i+1}原始数据放在数组A中;令i=1确定A[i]到A[n]中最小整数的位置,设为jA[i]和A[j]交换位置i=i+1i=n?结束开始用伪代码表示算法用流程图表示算法113.4算法和数据结构直接选择排序的c语言程序voidsort(intA[],intn)/*sort函数有2个参数:整型数组A和数组元素个数n*/{inti,j,t,k;/*定义4个整型变量*/for(i=0;i