堆排序
来源:互联网 发布:淘宝质量分怎么提高 编辑:程序博客网 时间:2024/06/04 19:20
void max_heap( int *arr , int index , int length ){int largest = index ;int left = 2 * index + 1 ;int right = 2 * index + 2 ;int tmp_value ;if( left < length && arr[index] < arr[left] ){tmp_value = arr[left] ;arr[left] = arr[index] ;arr[index] = tmp_value;largest = left;}if( right < length && arr[index] < arr[right] ){tmp_value = arr[right];arr[right] = arr[index];arr[index] = tmp_value;largest = right;}if( largest != index ){max_heap( arr , largest , length );}}void build_max_heap( int *arr , int length ){int i ;for( i = (length -1 -1 )/2 ; i >= 0 ; i-- ){max_heap( arr , i , length );}}void heap_sort (int *arr , int length ){int i ;int j = 0 ;int tmp_value ;build_max_heap( arr , length );for( i = length -1 ; i >= 1 ; i-- ){tmp_value = arr[0];arr[0] = arr[i];arr[i] = tmp_value;j++;max_heap( arr , 0 , length - j );}}
先定义三个方法
然后执行
int main(){int arr[] = { 1 , 7 , 6 , 8 , 5 , 4 , 3 , 9 , 2 };heap_sort( arr , 9);int i;for( i = 0 ; i < 9 ; i++ ){printf("%d - " , arr[i] );}printf("\n");}
- 堆及堆排序
- 堆/堆排序特点
- 【二叉堆、堆排序】
- 二叉堆 & 堆排序
- 二叉堆 & 堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆和堆排序
- 堆排序(最大堆)
- 堆和堆排序
- 堆和堆排序
- 堆及堆排序
- 堆和堆排序
- 堆与堆排序
- 测试度量指标的收集和意义 上
- 测试度量指标的收集和意义 下
- android瀑布流学习
- Linux内核usb驱动框架——U盘挂载
- c++stack容器介绍
- 堆排序
- java 设计模式学习笔记五Adapter适配器模式
- apache做反向代理服务器
- Oracle10g备份集压缩新特性(Backupset Compression)
- 海量数据 处理方法总结
- 不要跟我谈创意,戒了。
- 插入排序
- seg cs 问题
- 期待wordpress3.5正式版本