八大排序之堆排序
2016-08-02 22:21
204 查看
#pragma once void AdjustDown(int*a,size_t size, size_t parent) { size_t child = parent * 2 + 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 = parent * 2 + 1; } else { break; } } } void HeapSort(int *a,size_t size) { for (size_t i = (size - 2) / 2; i >= 0; i--) { AdjustDown(a,size,i); } for (size_t i = 0; i < size; i++) { swap(a[0], a[size - 1 - i]); AdjustDown(a, size - 1 - i, 0); } }
相关文章推荐
- 八大排序--堆排序
- 八大排序之堆排序
- 八大排序之堆排序
- 八大排序之堆排序
- (C语言)八大排序之:堆排序、快速排序
- 【排序】用Python实现八大排序算法--堆排序
- Java 八大排序之——堆排序
- 八大排序之堆排序
- 八大排序方法汇总(选择排序,插入排序-简单插入排序、shell排序,交换排序-冒泡排序、快速排序、堆排序,归并排序,计数排序)
- 数据结构与算法系列之一:八大排序之堆排序
- Java提高 - 八大排序方法之堆排序
- 排序-堆排序
- 算法导论之插入排序,选择排序,归并排序,冒泡排序,希尔排序,堆排序,快速排序的c语言实现
- 选择排序之堆排序
- 基础算法(二):堆排序,快速排序
- 快速排序,归并排序,堆排序,基数排序,插入排序,希尔排序,
- 数据结构和算法系列6 七大排序之直接选择排序和堆排序
- 三大查找八大排序
- 三 选择排序(简单选择排序和堆排序)
- 插入法排序、选择排序、冒泡法、快速排序、堆排序的C实现