堆与堆排序
来源:互联网 发布:ipv4 无网络访问权限 编辑:程序博客网 时间:2024/06/04 14:04
原文链接:http://blog.csdn.net/morewindows/article/details/6709644
void MinHeapFixup1(int *a,int i){ int j; int temp; j = (i - 1) / 2; temp = a[i]; while(j >= 0 && i != 0){ if(a[j] < a[i]) break; a[i] = a[j]; i = j; j = (i - 1) / 2; } a[i] = a[j];}
void MinHeapFixup(int *a,int i){ for(int j = (i - 1) / 2; j >= 0 && i != 0 && a[j] > a[i];i = j,j = (i - 1) / 2) swap(a[i],a[j]);}
void MinHeapAddNum(int *a,int n,int num){ a[n] = num; MinHeapFixup(a,n);}
void MinHeapFixdown(int *a,int i,int n){ int j = 2 * i + 1; int temp = a[i]; while(j < n){ if(j + 1 < n && a[j + 1] < a[j]) j++; if(a[j] > temp) break; a[j] = temp; i = j; j = 2 * i + 1; } a[i] = temp;}
void MinHeapFixdown2(int *a,int i,int n){ for(int j = 2 * i + 1; j < n && i < n;i = j,j = 2 * i + 1){ if(j + 1 < n && a[j + 1] < a[j]) j++; if(a[j] > a[i]) break; swap(a[j],a[i]); }}
void MinHeapDelNum(int *a,int n){ swap(a[0],a[n - 1]); MinHeapFixdown(a,0,n - 1);}
void MakeMinHeap(int *a,int n){ for(int i = n / 2 - 1;i >= 0;i--) MinHeapFixdown(a,i,n);}
void MinHeapSortToDes(int *a,int n){ MakeMinHeap(a,n); for(i = n - 1;i >= 0;i--){ swap(a[0],a[i]); MinHeapFixdown(a,0,i); }}
0 0
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 【堆与堆排序】
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 转 Java this、super使用总结
- 技术人生:故事之三十六放弃骑士时代
- java SE复习笔记26
- 大数据量时Mysql的优化要点【转】
- [MFC]文档视图体系结构、单文档界面
- 堆与堆排序
- 黑盒测试
- MyBatis之Mapper动态代理
- Bestcoders 56 Clarke and puzzle
- 九大内置对象及四大作用域
- 解决VMWare安装Linux Ubuntu不能正常联网的问题
- 技术人生:故事之三十七码农也是人!
- 转 Java final、static使用总结
- 技术人生:故事之三十八孤独的殉道者