zoukankan      html  css  js  c++  java
  • [算法导论]排序算法及主定理

    排序算法

     冒泡排序 O(n2) 内部排序,稳定排序

      for i = n to 2

        for j = 1 to i-1

          if  a[j]>a[j+1]

            do exchange a[j] and a[j+1]

        end

      end

      插入排序 O(N2) 内部排序 虽然复杂度较高,但实际应用中效果较好,小规模适合,最优O(N) 稳定排序

    for i = 2 to n

      d=a[i]

      j = i-1

      while j>=1 and a[j]>a[j+1]

        do a[j+1]=a[j];

      a[j]=d;

    end

      归并排序 O(NlogN) 外部排序,但复杂度低,最后算法的逼近 稳定排序

    merge(a,p,q,r)

    {

    i=q-p+2

    j=r-q+1

    create b[1...i-1]=a[p...q],c[1...j-1]=a[q+1...r]

    b[i]=+∞ c[j]=+∞

    m=n=1

    for s=p to r

      if b[m]<c[n] 

        do a[s]=b[m]

          m++ s++

      else do a[s]=c[n]

          n++ s++

      end

    end

    }

    merge_sort(a,x,y)

    {

    merge_sort(a,x,(x+y)/2)

    merge_sort(a,(x+y)/2+1,y)

    merge(a,x,(x+y)/2,y)

    }

    堆排序 O(NlogN) 内部排序,最优渐进 不稳定排序 

    max_heap(a,r)

    {

    i=r*2

    j=r*2+1

    large=r

    if a[i]>a[large] do large=i

    if a[j]>a[large] do large=j

    if large!=r do exchange a[r] and a[large]

           if large<heap_size/2 do max_heap(a,large)

    }

    build_max_heap(a,n)

    {

    for i= n/2 to 1 do max_heap(a,i)

    }

    heap_sort(a,n)

    {

    heap_size=n

    build_max_heap(a,n)

    while heap_size>=1

       do exchange a[1] and a[heap_size]

         heap_size--

         max_heap(a,1);

    }

    快速排序 期望复杂度为O(NlogN) 最坏情况为O(N2),但系数因子小,实用中比其他都要好,内部排序  不稳定排序

    p=partition(a,r)

    {

    d=a[r]

    i=0;

    for j=1 to r-1

      if a[j]<a[r] 

       do i++

          exchange a[i] and a[j]

       end

    p=i+1

    exchange a[r] and a[p]

    }

    quick_sort(a,n)

    {

    p=partition(a,n)

    quick_sort(a,p-1)

    quick_sort(a,p+1)

    }

    排序稳定性:相同关键字的元素相对位置是否会交换.56529,第一个5和2交换则是不稳定的

    主定理:

    T(n)=aT(n/b)+f(nc)

    1.  log(b)a<c  则O(nc)

    2.  log(b)a=c 则O(nclogn)

    3.  log(b)a>c 则O(n(log(b)a))

  • 相关阅读:
    springboot-pom文件报错问题
    php-session永不过期
    linux mysql 配置
    jmeter
    性能指标
    ab
    php--xdebug调试
    logstash6-mysql同步数据到es
    php--宝塔环境
    linux-centos7安装错误解决
  • 原文地址:https://www.cnblogs.com/mysunnyday/p/2171975.html
Copyright © 2011-2022 走看看