编写程序实现算法

编写程序实现算法,第1张

#include <stdio.h>

#define false 0

#define true 1

#define maxsize 20typedef struct{

int r[maxsize+1] //r[0]闲置或用作中转、哨兵单元

int length

}sqlistvoid Output(sqlist &L)

{

int i

for(i=1i<=L.lengthi++)

{

printf("%d ",L.r[i])

}

printf("\n")

}void BubbleSort(sqlist &L) {

int i,j, Exchange

for (i=1i<L.lengthi++){

Exchange = false

for (j = 1 j <= L.length-i j++)

if (L.r[j+1] <L.r[j]) {

L.r[0] =L.r[j]

L.r[j] =L.r[j+1]

L.r[j+1] =L.r[0]

Output(L)

Exchange = true

}

if (Exchange == false) return

}

} // BubbleSortint Partition (sqlist &L, int low, int high)

{

int pivotkey

L.r[0]=L.r[low]

pivotkey=L.r[low]

while(low<high)

{ while(low<high&&L.r[high]>=pivotkey)--high

L.r[low]=L.r[high]

while(low<high&&L.r[low]<=pivotkey)++low

L.r[high]=L.r[low]

}

L.r[low]=L.r[0]

return low

}

void QSort (sqlist &L,int low,int high)

{

int pivotloc

if (low<high)

{pivotloc=Partition(L,low,high)Output(L) QSort(L,low,pivotloc-1) QSort(L,pivotloc+1,high) }

}

int main()

{

sqlist L

int i

scanf("%d",&L.length)

for(i=1i<=L.lengthi++)

{

scanf("%d",&L.r[i])

}

printf("BubbleSort:\n")

BubbleSort(L)

printf("QSort:\n")

QSort(L,1,L.length)

return 0

}

算法步骤:第一步,要确定表示和的变量s和计数变量i,并赋值,一般情况下,赋s=0 i=0第二步,确定使用哪种循环结构,本题使用当型循环结构,确定判断条件i≤9 满足条件时,执行第三步,不满足条件时,执行第四步;第三步:执行,i=i+1第四步:输出s;程序结束.程序如下:S=0i=0WHILE i<=9 S=S+1/2^i i=i+1ENDPRINT SEND运行该程序,输出:S=1.9980. 解析 分 析: 算法分析: 第一步 选择一个变量S表示和,并赋给初值0 再选取一个循环变量i,并赋值为0;第二步 开始进入WHILE循环语句,首先判断i是否小于9;第三步 为循环表达式(循环体) 用WEND来控制循环;第四步 用END来结束程序. 根据算法语句编写相应的程序语言,见参考答案.试题 解析: 算法步骤:第一步,要确定表示和的变量s和计数变量i,并赋值,一般情况下,赋s=0 i=0第二步,确定使用哪种循环结构,本题使用当型循环结构,确定判断条件i≤9 满足条件时,执行第三步,不满足条件时,执行第四步;第三步:执行,i=i+1第四步:输出s;程序结束.可写出程序如下:S=0i=0WHILE i<=9 S=S+1/2^i i=i+1ENDPRINT SEND运行该程序,输出:S=1.9980. (12分) 考点: 程序语言.

算法是在有限步骤内求解某一问题所使用的一组定义明确的规则。通俗点说,就是计算机解题的过程。在这个过程中,无论是形成解题思路还是编写程序,都是在实施某种算法。前者是推理实现的算法,后者是 *** 作实现的算法。一个算法应该具有以下五个重要的特征:1、有穷性: 一个算法必须保证执行有限步之后结束;2、确切性: 算法的每一步骤必须有确切的定义;3、输入:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定除了初始条件;4、输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;5、可行性: 算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。当遇到一个算法问题时,首先要知道自己以前有没有处理过这种问题.如果见过,那么你一般会顺利地做出来如果没见过,那么考虑以下问题:当遇到一个算法问题时,首先要知道自己以前有没有处理过这种问题.如果见过,那么你一般会顺利地做出来如果没见过,那么考虑以下问题:1. 问题是否是建立在某种已知的熟悉的数据结构(例如,二*树)上?如果不是,则要自己设计数据结构。2. 问题所要求编写的算法属于以下哪种类型?(建立数据结构,修改数据结构,遍历,查找,排序...)3.分析问题所要求编写的算法的数学性质.是否具备递归特征?(对于递归程序设计,只要设计出合理的参数表以及递归结束的条件,则基本上大功告成.)4.继续分析问题的数学本质.根据你以前的编程经验,设想一种可能是可行的解决办法,并证明这种解决办法的正确性.如果题目对算法有时空方面的要求,证明你的设想满足其要求.一般的,时间效率和空间效率难以兼得.有时必须通过建立辅助存储的方法来节省时间.5.通过一段时间的分析,你对解决这个问题已经有了自己的一些思路.或者说,你已经可以用自然语言把你的算法简单描述出来.继续验证其正确性,努力发现其中的错误并找出解决办法.在必要的时候(发现了无法解决的矛盾),推翻自己的思路,从头开始构思.6.确认你的思路可行以后,开始编写程序.在编写代码的过程中,尽可能把各种问题考虑得详细,周密.程序应该具有良好的结构,并且在关键的地方配有注释.7.举一个例子,然后在纸上用笔执行你的程序,进一步验证其正确性.当遇到与你的设想不符的情况时,分析问题产生的原因是编程方面的问题还是算法思想本身有问题.8. 如果程序通过了上述正确性验证,那么在将其进一步优化或简化。9. 撰写思路分析,注释.----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------看不懂,还是不明白,有谁清楚告诉我啊,


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7686591.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-08
下一篇 2023-04-08

发表评论

登录后才能评论

评论列表(0条)

保存