堆排序

来源:互联网 发布:疯狂java讲义 mobi 编辑:程序博客网 时间:2024/05/06 13:30

//MaxHeap_Sort

 

int Adjust_MaxHeap(int *str, int i, int n) {

int lChild = 2 * i + 1;

int rChild = 2 * i  + 2;

int largest = i;

if(lChild <= n && a[lChild] > a[i]) {

largest = a[lChild];

}

if(rChild <= n && a[rChild] > a[largest]) {

largest = a[rChild];

}

if(largest != i)  {

swap(&str[i], &str[largest]) ;

Adjust_MaxHeap(str, largest, n);

}

}

 

int MaxHeap_Sort(int *nArray, int n) {

for(int i = n / 2; i >= 0; i--) {

Adjust_MaxHeap(nArray, i, n);

}

for(int i = n - 1; i >= 0; i--) {

swap(&nArray[0]], &nArray[i]);

}

}

原创粉丝点击