- 论坛徽章:
- 0
|
回复 9# dreamice
我知道了,这里面有个死循环。
改正后代码为:
1 #include"heap.h"
2 #include"heapify.h"
3 extern int heapsize;
4 int Max_heapify(int A[],int i)
5 {
6
7 int l, r;
8 l = Left(i);
9 r = Right(i);
10
11 int largest;
12 if(l <= heapsize && A[l] > A)
13 largest = l;
14 else
15 largest = i;
16 if ( r <= heapsize && A[r] > A[largest])
17 largest = r;
18
19 if (largest != i)
20 Exchange(A, A[largest]);
21 else
22 return 0; /*这里的这个return 很要命。因为在算法导论上,好像没有else的相应“伪码”;他给省略了。我也忽略了这个问题,因为这了没有返回所以会一直循环,出现越位。这算自己的问题*/
23 Max_heapify(A, largest);
24 return 0;
25 }
多谢各位。 |
|