需要手写的算法之-----堆排序算法
来源:互联网 发布:红酒网络推广 编辑:程序博客网 时间:2024/06/05 00:46
void HeapCore(vector<int > &vec ,size_t size, size_t end){size_t i = end ;size_t j = i ;bool flag = false;do{flag = false;if(i * 2 < size && vec[i ] > vec[i *2]){j = i*2;}if(i *2 + 1 < size && vec[i*2 + 1 ] < vec[i *2] && vec[i ] > vec[i *2] ) {j = i*2 +1;} if(i != j){int tmp = vec[j];vec[j] = vec[i];vec[i] = tmp;flag = true;}i = j;}while(flag && i < size );}void Heap(vector<int >&vec){for(size_t i = (vec.size() - 1)/2 ; i > 0 ; i--){HeapCore(vec , vec.size() ,i);}//将第一个个与最后一个交换for(size_t i = vec.size() - 1; i > 0 ; i--){int tmp = vec[1];vec[1] = vec[i];vec[i] = tmp;if(i > 1)HeapCore(vec , i , 1);}}int main(){vector<int > vec;for(int i = 0 ; i < 100 ; i++){vec.push_back(i);} Heap(vec);cout<<endl;}
0 0
- 需要手写的算法之-----堆排序算法
- 需要手写的算法之---------------归并排序
- 需要手写的排序算法---希尔排序
- 需要手写的算法之----------快速排序的排序的列子
- 【排序算法】之堆排序的实现
- 算法之堆排序
- 算法之堆排序
- 算法之堆排序
- 算法之堆排序
- 算法之堆排序
- 算法之堆排序
- 算法之堆排序
- 算法之堆排序
- 【算法】之堆排序
- 手写堆heap(STL的heap算法)
- 排序算法之堆排序
- 排序算法之堆排序
- 排序算法之 堆排序
- 火狐浏览器造成 spring3 MVC action的方法会执行两次
- 设计模式六大原则(4):接口隔离原则
- 分布式设计与开发------数据拆分
- Java 标签 看了这个想不理解都难
- JS中arguments对象详解
- 需要手写的算法之-----堆排序算法
- 构造函数&拷贝构造函数&赋值构造函数
- 【Red5】如何搭建环境以及调试Red5(1.0.6版本)应用(二)
- 如何用H5实现一个触屏版的轮播器?
- PorterDuffXfermode使用及工作原理详解
- iOS之离屏渲染
- 怎样理解ABBYY 中的Screenshot Reader
- Android 可拖拽的GridView效果实现, 长按可拖拽和item实时交换
- iOS 控件宽高字体大小适配方法