2008年4月18日

          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 迎風十八刀 閱讀(187) | 評論 (0)編輯 收藏

          2008年3月30日

          求解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 迎風十八刀 閱讀(171) | 評論 (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 迎風十八刀 閱讀(333) | 評論 (0)編輯 收藏

          僅列出標題  
          主站蜘蛛池模板: 土默特左旗| 湟源县| 喜德县| 大城县| 班玛县| 昌宁县| 山东省| 赤城县| 全州县| 朝阳市| 扶沟县| 松潘县| 和硕县| 西平县| 曲靖市| 紫阳县| 台南县| 澎湖县| 永登县| 乌鲁木齐市| 乳源| 岑巩县| 中牟县| 汝阳县| 沿河| 新津县| 临沧市| 盐城市| 搜索| 荣昌县| 霸州市| 西贡区| 平原县| 五家渠市| 赫章县| 固安县| 淮安市| 汉川市| 贺州市| 屏东县| 苏尼特左旗|