2008年4月18日

          Title第六章 堆排序

          MAX-HEAPIFY(A,i):    依次調(diào)整使A[i]為根的子樹成為最大堆,是堆排序的重要子程序;
          BUILD-MAX-HEAP(A):
             1.  heap-size[A]    ←   length[A]
             2.  for   i   ←  ⌊length[A]/2⌋   downto   1              //從最后一個(gè)節(jié)點(diǎn)的父節(jié)點(diǎn)開始調(diào)整  
             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的時(shí)間復(fù)雜度為Ο(nlgn);而且最壞和最佳運(yùn)行時(shí)間都是Ω(nlgn)

          最大優(yōu)先級隊(duì)列支持的操作:
          INSERT(S,x)
          MAXIMUM(S):   返回S中具有最大關(guān)鍵字的元素
          EXTRACT-MAX(S):   去掉并返回S中的具有最大關(guān)鍵字的元素
          INCREASE-KEY(S,x,k):    將元素x的關(guān)鍵字的值增加到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 迎風(fēng)十八刀 閱讀(191) | 評論 (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 迎風(fēng)十八刀 閱讀(176) | 評論 (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)   ,穩(wěn)定,空間為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),  穩(wěn)定,空間O(n)

           

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

          僅列出標(biāo)題  
          主站蜘蛛池模板: 沂水县| 天峻县| 霸州市| 江川县| 三亚市| 霍邱县| 来凤县| 乐都县| 德惠市| 南丰县| 崇州市| 大理市| 赫章县| 剑阁县| 潼关县| 金塔县| 东乌| 彰化县| 吉木乃县| 呼伦贝尔市| 江陵县| 洛阳市| 绥化市| 武安市| 富平县| 竹山县| 城步| 大冶市| 台东县| 崇仁县| 长顺县| 昔阳县| 大邑县| 呼和浩特市| 和田县| 繁峙县| 郯城县| 休宁县| 湘潭市| 蕉岭县| 天门市|