C++实现堆排序
来源:互联网 发布:贵州高考录取数据 编辑:程序博客网 时间:2024/06/06 21:05
C++实现堆排序:
#include<iostream>
#include<vector>
using namespace std;
void maxheapify(int *A,int i,int size)
{
int left=2*i,right=2*i+1,largest=i;
if(left<=size&&A[i]<A[left])
largest=left;
if(right<=size&&A[largest]<A[right])
largest=right;
if(largest!=i)
{ int temp=A[i];
A[i]=A[largest];
A[largest]=temp;
maxheapify(A,largest,size);
}
}
void heapbuild(int *A,int size)
{
for(int i=size/2;i>=1;i--)
maxheapify(A,i,size);
}
void heapsort(int *A,int size)
{
heapbuild(A,size);
int num=size;
for(int i=size;i>=2;i--)
{
int temp=A[1];
A[1]=A[i];
A[i]=temp;
num--;
maxheapify(A,1,num);
}
}
int main(){
/*size_t number=0;
vector<int>vec;
int num;
while(cin>>num)
vec.push_back(num);
cin.clear ();
number=vec.size();
cout<<"输入数字个数"<<number<<endl;
int *p=new int[number];
cout<<"输入的数组"<<endl;
for(vector<int>::iterator iter=vec.begin();iter!=vec.end();++iter,++p)
*p=*iter;*/
// int A[10]={11,3,4,2,7,5,6,9,8,10};
//heapsort(A,10);
//for(int i=1;i>=9;i++)
// cout<<A[i]<<" ";
int A[100];
for(int i=1;i<=10;i++)
cin>>A[i];
heapsort(A,10);
for(int i=1;i<=10;i++)
cout<<A[i]<<" ";
return 0;
}
- 堆排序的C实现
- 堆排序C语言实现
- 堆排序C语言实现
- 堆排序C语言实现
- 堆排序C语言实现
- 堆排序--C语言实现
- C语言实现堆排序
- 堆排序(c实现)
- 堆排序--C语言实现
- 堆排序C语言实现
- 堆排序的实现(c++)
- C实现heap堆排序
- c/c++实现堆排序
- 堆排序C语言实现
- C语言实现堆排序
- 堆排序c语言实现
- 堆排序-C语言实现
- 排序算法(C实现)--------- 堆排序
- C++实现插入排序
- java 构造器小解
- ZOJ 2928 模拟退火 求三维费马点
- 黑马程序员(九)_7K面试题(交通灯管理系统) (根据张老师的视频按照自己想法修改的)
- POJ2431 Expedition
- C++实现堆排序
- tv助手项目阶段性总结
- 矩阵运算 java
- 10 java泛型
- hash算法原理及常见函数
- The Places of Our Lives: Visiting Patterns and Automatic Labeling from Longitudinal Smartphone Data
- Zstack协议栈函数的一些浅解
- HX-SQL Server Log Explorer(SQL SERVER 日志恢复工具)V2.0
- 淘宝下单高并发解决方案