标题:[求助]编程实现希尔,快速,堆排序,归并排序
只看楼主
獨萊獨徍
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2006-8-14
 问题点数:0 回复次数:1 
[求助]编程实现希尔,快速,堆排序,归并排序
编程实现希尔,快速,堆排序,归并排序算法,并计算每种排序算法的比较,交换次数.
搜索更多相关主题的帖子: 希尔 算法 
2006-08-17 16:41
naughtyboy
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2006-8-5
得分:0 

唉不知道希尔的和归并的 下面是堆排和快排的伪代码

快排:
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

RANDOMIZED-PARTITION(A, p, r)
1 i ← RANDOM(p, r)
2 exchange A[r] ↔ A[i]
3 return PARTITION(A, p, r)

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

//////////////////////////////////

堆排:
MAX-HEAPIFY(A, i)
1 l ← LEFT(i)
2 r ← RIGHT(i)
3 if l ≤ heap-size[A] and A[l] > A[i]
4 then largest ← l
5 else largest ← i
6 if r ≤ heap-size[A] and A[r] > A[largest]
7 then largest ← r
8 if largest ≠ i
9 then exchange A[i] ↔ A[largest]
10 MAX-HEAPIFY(A, largest)

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)

因为我是直接在书上粘贴的,所以分的比较开。实现的时候有的地方最好用内联函数。

2006-08-17 22:01



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-84545-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019294 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved