2008年3月30日

          Title第六章 堆排序

          MAX-HEAPIFY(A,i):    依次調整使A[i]為根的子樹成為最大堆,是堆排序的重要子程序;
          BUILD-MAX-HEAP(A):
             1.  heap-size[A]    ←   length[A]
             2.  for   i   ←  ⌊length[A]/2⌋   downto   1              //從最后一個節點的父節點開始調整  
             3.         do    MAX-HEAPIFY(A,i)

          HEAPSORT(A):
              1.    BUILD-MAX-HEAP(A)
              2.    for    i   ←    length[A]   downto   2
              3.           do   exchange    A[1]   ↔   A[i]
              4.                   heap-size[A]  ←   heap-size[A] -1
              5.                   MAX-HEAPIFY(A,1)

          HEAPSORT的時間復雜度為Ο(nlgn);而且最壞和最佳運行時間都是Ω(nlgn)

          最大優先級隊列支持的操作:
          INSERT(S,x)
          MAXIMUM(S):   返回S中具有最大關鍵字的元素
          EXTRACT-MAX(S):   去掉并返回S中的具有最大關鍵字的元素
          INCREASE-KEY(S,x,k):    將元素x的關鍵字的值增加到k

          HEAP-EXTRACT-MAX(A):   跟堆排序一樣
          MAX-HEAP-INSERT(A,key): 
           1.  heap-size[A] ←  heap-size[A] + 1
           2.  A[heap-size[A]] ← -∞
           3.  HEAP-INCREASE-KEY(A, heap-size[A] , key)

          Title第七章 快速排序

          PARTITION(A,p,r):
           1. x ← A[r]
           2. i ← p-1
           3. for j ←    p to r - 1
           4.       do  if  A[j] £ x
           5.                then  i ← i+1
           6.                         exchange  A[i] ↔ A[j]
           7.  exchange  A[i+1]  ↔ A[r]
           8.  return  i+1

          QUICKSORT(A,p,r)
           1. if  p < r
           2.     then q ← PARTITION(A,p,r)
           3.              QUICKSORT(A,p,q-1)
           4.              QUICKSORT(A,q+1,r)










           

          posted @ 2008-04-18 14:05 迎風十八刀 閱讀(191) | 評論 (0)編輯 收藏

          求解T(n)=T(ceil(n/2))+1

          猜測解為O(lgn)
          只需證T(n)<=clg(n-b)。于是T(n)<=clg(ceil(n/2-b))+1
                                                               <=clg(n/2-b+1)+1
                                                                ...
                                                                 <=clg(n-b)

           

          主方法:

          形如T(n)=aT(n/b)+f(n),注意a>=1,b>1
          比較f(n)和nlogba,則T(n)為較大者,如果f(n)=Q(nlogba),則T(n)=Q(nlogbalgn)

          posted @ 2008-03-30 22:26 迎風十八刀 閱讀(178) | 評論 (0)編輯 收藏

          簡單插入排序:


          Insertion-Sort(A):

          1.for j = 2 to length[A]
          2.   do key=
          A[j]
          3.   //insert A[j] into the sorted sequence A[1..j-1]

          4.    i = j-1
          5.    while i>0 and A[i]>key
          6.    do A[i+1=
           A[i]
          7.       i = i-1

          8.   A[i+1= key

          T(n)=O(n2)   ,穩定,空間為O(1) 


           



          合并排序:

          Meger-Sort(A,p,r):

          1if p < r
          2.   then q = floor((p+r)/2
          )
          3.       Meger -
           Sort(A,p,r)
          4.       Meger - Sort(A,q+1
          ,r)
          5.       Meger(A,p,q,r)


          T(n)=O(nlgn),  穩定,空間O(n)

           

          posted @ 2008-03-30 21:33 迎風十八刀 閱讀(340) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 崇明县| 贡觉县| 宽城| 息烽县| 博湖县| 灌南县| 尤溪县| 虞城县| 遵义市| 马关县| 皋兰县| 延川县| 乌兰浩特市| 离岛区| 安泽县| 通道| 仁寿县| 兴国县| 鄂尔多斯市| 泗洪县| 茂名市| 准格尔旗| 永寿县| 奉贤区| 美姑县| 沁水县| 靖西县| 桓仁| 平定县| 贞丰县| 五峰| 浦江县| 邹城市| 盐边县| 平塘县| 澄城县| 昭觉县| 梅州市| 鱼台县| 嘉定区| 安泽县|