码迷,mamicode.com
首页 > 编程语言 > 详细

堆排序

时间:2016-05-08 20:02:34      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:create   元素   parent   

首先将数组中的元素生成大堆,依次将数组的第一个元素(大堆的根节点)与数组最后一个元素进行交换,在将数组的总个数依次减一,将数组重新生成大堆,依次,最终数组中的元素排列即为大堆的排序情况。

void Create(int parent, int a[], int size)

{

int child = 2 * parent + 1;

while (child < size)

{

if (child + 1 < size && a[child + 1] > a[child])

{

child++;

}

if (a[child]>a[parent])

{

swap(a[child], a[parent]);

parent = child;

child = 2 * parent + 1;

}

else

{

break;

}

}

}

void HeapSort(int a[], int size)

{

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

{

Create(i, a, size);

}

for (int i = size - 1; i >= 0; i--)

{

swap(a[0], a[i]);

Create(0, a, i);

}

}


堆排序

标签:create   元素   parent   

原文地址:http://10810512.blog.51cto.com/10800512/1771210

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!