堆排序
来源:互联网 发布:大众奥迪编程 编辑:程序博客网 时间:2024/06/12 21:07
根据严蔚敏老师版本的数据结构一书,实现的代码,经编译成功。#include<iostream>using namespace std;void HeapSort(int a[],int size);//void HeapAdjust(int a[],int start,int length);void createHeap(int a[],int size);int main(){ int a[10]={71,18,151,138,160 ,63 ,174, 169 ,79 ,78}; for(int i=0;i<10;i++){ cout<<a[i]<<" "; } cout<<endl; cout<<"After sorting the heap.............."<<endl; HeapSort(a,10); for(int i=0;i<10;i++) { cout<<a[i]<<" "; } return 0; }void HeapAdjust(int a[],int start,int length){ if(length==0){ return;} int rc=a[start]; for(int i=2*start;i<=(length-1);i=i*2) { //找到下面最大的结点 if(i+1<=(length-1)&&a[i]<a[i+1]) { i++; } if(rc>a[i]) break; a[start]=a[i];start=i;//再从这个点进行堆调整 } a[start]=rc;}void createHeap(int a[],int size){ for(int i=size/2;i>=0;i--) { HeapAdjust(a,i,size); }}void HeapSort(int a[],int size){ createHeap(a,size); int tmp; for(int i=size-1;i>1;i--) { tmp=a[0]; a[0]=a[i]; a[i]=tmp; HeapAdjust(a,0,i); } tmp=a[0]; a[0]=a[1]; a[1]=tmp;}编译的结果如下:
阅读全文
0 0
- 堆及堆排序
- 堆/堆排序特点
- 【二叉堆、堆排序】
- 二叉堆 & 堆排序
- 二叉堆 & 堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆和堆排序
- 堆排序(最大堆)
- 堆和堆排序
- 堆和堆排序
- 堆及堆排序
- 堆和堆排序
- 堆与堆排序
- 竖式问题
- 使用Lock与ReentrantLock模拟消息队列阻塞,生产与消费问题模拟
- java中集合List用法
- elasticsearch条件查询语句与聚合查询语句模板
- 【算法-简单数学问题】- 素数表的获取(简单方法和埃式筛法)
- 堆排序
- Android入门学习:GUI中的常用控件
- CSS简介:初识CSS
- 导入项目时,将java工程转变成web工程
- 盒模型
- Java网络爬虫(十)--使用redis数据库构建爬虫队列
- 分布式架构
- ubuntu系统无法访问无法磁盘最佳解决办法
- 斐波那契(java)