




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序设计语言新编计算机导论典型问题的几种程序实现本节将选择当前比较流行的几种程序设计语言,给出求解若干典型问题的相应程序。3.典型问题的几种程序实现冒泡排序问题的C++实现冒泡排序:基本思想是对相邻元素进行比较,并根据比较的结果交换位置,从而逐步由任意序列变为有序序列。若有n个待排数字,则需要进行n-1轮排序,第i轮需要比较n-i次(i从1开始)。图1冒泡排序3.典型问题的几种程序实现冒泡排序问题的C++实现#include<iostream>usingnamespacestd;
//冒泡排序函数,a为待排序的数组,n为数组中的元素个数voidBubbleSort(int*a,intn){ inttemp; for(inti=0;i<n-1;i++) //一共需比较n-1趟
{ for(intj=0;j<n-i-1;j++) //每趟需进行n-i-1次的两两比较 if(a[j]>a[j+1]) //相邻元素两两比较,若逆序则交换
{temp=a[j]; a[j]=a[j+1]; a[j+1]=temp;}}}//主函数intmain(){intarr[]={8,5,3,9,2,7};BubbleSort(arr,6); //调用冒泡排序函数for(inti=0;i<6;i++) cout<<arr[i]<<""; //输出排序后的结果cout<<endl;return0;}算法1冒泡排序算法
3.典型问题的几种程序实现汉诺塔问题的Java实现汉诺塔问题:当A杆上只有一个盘子时只要把这个盘子直接移到C杆即可;当A杆上两个盘子时,先把1号盘移到B杆,再把2号盘移到C杆,最后再把B杆上的1号盘移到C杆即可。假设要移动的盘子共64个,此时可以先将上方的63个盘子看成一个整体,这样就相当于只有两个盘子,问题就变得简单起来,相当于完成两个盘子的转移就行了。对于63个盘子的移动,采用与之前一样的解决方案,先完成前62个盘子的移动,逐步前推至62、61、60、......、2、1,直至完成所有盘子的移动。图2汉诺塔问题3.典型问题的几种程序实现importjavax.swing.JOptionPane; //导入一个简单的交互窗口包publicclassHanoiTemple{
/** *@paramargs publicstaticvoidmain(String[]args){
Stringn=JOptionPane.showInputDialog("请输入要移动的盘数:");HanoiTempleht=newHanoiTemple(); //新建一个汉诺塔对象
ht.move(Integer.parseInt(n),'A','B','C'); //移动函数
} publicvoidmove(intn,chara,charb,charc){ //递归函数,汉诺塔的实现
if(n==1){ //若当前只用移动一个盘,直接移动过去System.out.println("movefrom"+a+"to"+c); }else{ move(n-1,a,c,b); //递归调用从a移动到b move(1,a,b,c); //当前只有一个盘,从a柱移动到c柱
move(n-1,b,a,c); //递归调用从b移动到c
}}}算法2汉诺塔问题汉诺塔问题的Java实现3.典型问题的几种程序实现国王的婚姻问题的Python实现国王的婚姻问题:本质上就是简单的计算总因子个数的问题,只要求出待求数据num的总因子个数即可。代码采用的是国王的方法,即穷举所有可能的因子。大臣的方法实际是一种并行计算的思想,当同学们对操作系统有了一定的了解之后不难理解,具体实现请参考专业操作系统设计的书籍。3.典型问题的几种程序实现国王的婚姻问题的Python实现num=int(input("inputnumber:")) #输入待求数i=1 #被除数number=0 #因子个数ifnum>=2: #如果待求数为1,则直接跳出whilei<=num: #循环ifnum%i==0: #判断是否能整除,整除则为num的因子number+=1i+=1print("总因字数:",number) #输出总因子数算法3国王的婚姻问题3.典型问题的几种程序实现国王的婚姻问题的Python实现算法优化:例如当num可以被整除时,表示必然存在两个因子,即可以直接number+=2,此时动态的修改while语句的判断条件为两个因子较大的一个,即可大大降低时间复杂度。num=int(input("inputnumber:")) #输入待求数max=num #循环上界i=1
#被除数number=0
#因子个数ifnum>=2:
#如果待求数为1,则直接跳出whilei<maxandi<num/2: #循环i需要小于循环上界max,#且小于num/2(因子成对出现)ifnum%i==0: #判断是否能整除,整除则为num的因子number=number+2ifi**2<numelsenumber+1#判断如果num为#平方数,则该因子只
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房产继承优先权放弃及共有权转让协议书
- 外企在华员工权益保护及管理服务协议
- 茶叶门店代理协议书
- 制沙场承包合同协议书
- 购车金融签约协议书
- 资产处置廉洁协议书
- 钻石黄金抵押协议书
- 钢琴学员转让协议书
- 食堂外包框架协议书
- 跃层室内搭建协议书
- 军队文职考试试题及答案
- 【公开课】巴西+课件-2024-2025学年七年级地理下学期人教版
- 10.3 保障财产权 课件-2024-2025学年统编版道德与法治七年级下册
- 2025-2030中国表面声波(SAW)滤波器行业市场发展趋势与前景展望战略研究报告
- 的电工考试试题及答案
- 国际压力性损伤-溃疡预防和治疗临床指南(2025年版)解读课件
- 2024年首都机场集团招聘笔试参考题库附带答案详解
- 小学思政课《爱国主义教育》
- 工会行政性资产管理暂行办法
- 预制箱梁运输及安装质量保证体系及措施
- 航空煤油 MSDS 安全技术说明书
评论
0/150
提交评论