ヒープソートのdownHeapメソッドを作ったのですが以下のとうり、ソートできません。間違っている箇所がわからないです。
[9,6,5,5,3,3,2,1,4,1]
[9,6,5,5,3,3,2,1,4,1]
Java
1private void Heap(int n){ 2 3 if(n != 0){ 4 T ret = data.get(0); 5 data.set(0, data.get(n)); 6 int v = parent(n); int lv = leftChild(n); int rv = rightChild(n); 7 while(lv < n){ 8 if( rv < n && cmp.compare(data.get(v) , data.get(lv)) < 0 && cmp.compare(data.get(lv) , data.get(rv)) >= 0){ 9 swap(v, lv); v = lv; 10 } 11 else if(rv < n && cmp.compare(data.get(v) , data.get(rv)) < 0 && cmp.compare(data.get(lv) , data.get(rv)) < 0 ){ 12 swap(v,rv); 13 v = rv; 14 } 15 else if(rv == n && cmp.compare(data.get(v) , data.get(lv)) < 0){ 16 swap(v,rv); 17 v = lv; 18 } 19 else 20 break; 21 lv = 2*v +1; 22 rv = 2*v +2; 23 } 24 data.add(ret); 25 } 26 } 27 28 29 30 31