算法学习1——数学基础知识

1、算法的数学基础

①函数渐进的界——O、o、Ω、\omega\theta

②求和方法——等比、等差、调和级数。

③递推方式求解

例子:插入排序

InsertSort(A, n)
输入
输出
1.for <-2 to n do        //第一个直接放入,不需排序
2.    x <- A[j]            //将待排的元素取出
3.    i <- j-1            //i代表排好序的元素个数
4.    while i>0 and x<A[j] do  //遍历比较排好序的元素插入
5.        A[i+1]<-A[i]
6.        i <- i-1
7.    A[i+1] <- x

//两层循环,最坏时间复杂度为O(n^2)

W(n) = W(n- 1) + n - 1       W(1) = 0     ===>    W(n) = n(n-1)/2 = O(n^2)

例子:二分归并排序

MergeSort(A, p, r)
输入
输出
1.if p<r              
2.then q<-⌊(p+r)/2⌋           //将原数组划分为两个子数组
3.MergeSort(A, p, q)          //递归调用
4.MergeSort(A, p+1, r)
5.Merge(A, p, q, r)         //归并

Merge(A, p, q, r)
1.x <- q-p+1, y <- r-q    //将两个子数组的元素数赋给x,y
2.将A[p...q]复制到B[1...x],将A[q+1...r]复制到C[1...y]
3.i <- 1, j <- 1, k <- p    //i, j都从1开始,k从排序数组的第一个位置开始
4.While i<=x and j<=y do
5.    if B[i]<=C[j]
6.    then A[k] <- B[i]
7.        i <- k+1
8.    else  A[k] <- B[i]  j <- j+1
9.    k <- k+1 
10.   if i>x   then  将C[]中剩下的移入
11.   else    将B[]中剩下的移入

W(n) = 2W(n/2) + n -1    W(1) = 0     ===> W(n)  = O(nlogn)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值