算法入门第一篇

本文介绍了冒泡排序、堆排序、直接选择排序和直接插入排序四种算法的Java实现,并详细解析了每种排序方法的基本操作。同时,文章讨论了这四种排序算法的时间复杂度,分析了它们的性能差异。此外,还探讨了降低算法时间复杂度的方法,以解决'百钱买百鸡'问题。最后,针对不同计算复杂性的算法,讨论了在不同速度计算机上处理问题的输入规模变化。
摘要由CSDN通过智能技术生成

1、给定一组“无序”记录序列{25, 30, 11, 7, 22, 16, 18, 33, 40, 55},采用冒泡排序、堆排序、直接选择排序以及直接插入排序方法,将该序列排成非递减序列,完成以下问题:

         1)写出冒泡排序、堆排序、直接选择排序和直接插入排序方法的Java实现代码。

2)采用上述4种方法进行排序时,都要执行的两种基本操作是什么?

3)写出冒泡排序第二趟排序后的结果。

        4)画出采用堆排序方法第一次抽取堆顶元素后得到的最小堆。

        5)采用直接选择法排序时,第5次交换和选择后,未排序记录是什么?

        6)采用直接插入法排序把第6个记录16插入有序表时,为寻找插入位置,需要比较多少次?

  7)试比较上述4种排序算法的性能(时间复杂度)。

2、问题提出:公元前5世纪末,中国古代数学家张丘建在他的《算经》中提出了著名的 “百钱买百鸡问题”:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?即一百个铜钱买了一百只鸡,其中公鸡一只5钱、母鸡一只3钱,雏鸡一钱3只,问一百只鸡中公鸡、母鸡、雏鸡各多少? 算法的伪代码如下:

for x = 0 to 100

     for y = 0 to 100

       for z = 0 to 100

         if  (x+y+z=100)  and  (5*x + 3*y + z/3 = 100)  then

           System.out.println("  "+x+"  "+y+"  "+z)

         end if

实验要求:对上述算法做出改进以提高算法的效率,要求将算法的时间复杂性由Ο(n3)降为 Ο(n2),并将改进的算法编程实现。

3、硬件厂商XYZ公司宣称他们研制的微处理器的运行速度是其竞争对手ABC公司同类产品的1000倍。对于计算复杂性分别为,,的各类算法,若用ABC公司的计算机能在1小时内解决输入规模为的问题,则用XYZ公司的计算机在1小时内能解决多大输入规模的问题?

4、假设某算法在输入规模为n时的计算时间为。在某台计算机上,于t秒内实现并完成该算法。现有另一台计算机,其运行速度为第一台的128倍,那么在这台新机器上用同一算法在t秒内能解决多大输入规模的问题?

 

1)

int n

  • 1
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值