算法导论学习笔记-第2章 算法入门


2.1 插入排序

    插入排序是一个对少量元素进行排序的有效算法,工作原理类似于扑克牌的插入过程:在排好子数组A[1..j-1]后,将元素A[j]插入,形排好序的子数组A[1..j]。


      伪代码:

    

 

      C代码:

     

 

 

 

     循环不变式,主要用来帮助我们理解算法的正确性。对于循环不变式,必须证明它的三个性质:

  •     初始化:它在循环的第一轮迭代开始之前,应该是正确的。
  •     保持:如果在循环的某一次迭代开始之前它是正确的,那么,在下一次迭代开始之前,它也应该保持正确。
  •     终止:当循环结束时,不变式给了我们一个有用的性质,它有助于表明算法是正确的。

 

 

 

 

2.2 算法分析

    算法分析即指对一个算法所需要的资源进行预测。通常,资源是指我们希望测度的计算时间。
    一般来说,算法所需时间是与输入规模同步增长的,因而常常将一个程序的运行时间表示为其输入的函数。
    插入排序的算法分析:
    最坏情况:整个数组时逆序的,θ(n2 )
    最好情况:整个数组已经排序好,θ(n)



2.3 算法设计

    分治法:
    分解:将原问题分解成一系列子问题;
    解决:递归地解各子问题。如子问题足够小,则直接求解;
    合并:将子问题的结果合并成原问题的解。

    归并排序:
    C代码:

     

 

       最坏情况下时间复杂度为θ(nlogn)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值