怎样使用c++语言实现简单的堆排序

 时间:2024-10-17 00:05:47

1、堆结构堆这种数据结构首先是一种特殊的完全二叉树,且满足子节点值大于父节点点值的大或小。

怎样使用c++语言实现简单的堆排序

2、首先取未排序数组4,3,7,1,8,5。下面我们演示一下该算法的实现步骤。

怎样使用c++语言实现简单的堆排序

3、根据数组元素的位置,首先构建一个完全二叉树,填满一层之后再填满下一层。

怎样使用c++语言实现简单的堆排序

4、调整完全二叉树中元素的次序,保证每一个节点元素要比他的子节点元素要大,构成一个大顶堆。

怎样使用c++语言实现简单的堆排序

5、这个时候该纾解点的根节点元素是所有元素中最大的元素。只要按照把根节点一次提取出来即可。

怎样使用c++语言实现简单的堆排序
怎样使用c++语言实现简单的堆排序
怎样使用c++语言实现简单的堆排序
怎样使用c++语言实现简单的堆排序
怎样使用c++语言实现简单的堆排序

6、提供代码:#include <挢旗扦渌;iostream>using namespace std;void heapi熠硒勘唏fy(int arr[],int n,int i){ int smallest=i; int l=2*i+1; int r=2*i+2; if (l<n&&arr[l]<arr[smallest]) smallest=l; if (r<n&&arr[r]<arr[smallest]) smallest=r; if (smallest!=i) { swap(arr[smallest],arr[i]); i=smallest; heapify(arr,n,i); }}void heapsort(int arr[],int n){ for (int i=n/2-1;i>=0;i--) heapify(arr,n,i); for (int i=n-1;i>=0;i--) { swap(arr[0],arr[i]); heapify(arr,i,0); }}void printarray(int arr[],int n){ for(int i=n-1;i>=0;i--) cout<<arr[i]<<" "; cout<<endl;}int main(){ int arr[]={3,8,2,9,12,5}; int n=sizeof(arr)/sizeof(int); cout<<"origin array:"; printarray(arr,n); heapsort(arr,n); cout <<"sorted array:"; printarray(arr,n); return 0;}

怎样使用c++语言实现简单的堆排序
  • 使用exe4j打包Java程序
  • VS怎么开启应用自定义窗口布局前进行确认
  • 上传文件框怎么美化
  • VS扩展如何添加我的库#校园分享#
  • 武汉地铁2号线直达的大学
  • 热门搜索
    手抄报 关于环保的手抄报 儿童节手抄报 消防安全手抄报内容 关于党的手抄报 环保手抄报内容 节水手抄报简单又漂亮 春天的手抄报 数学手抄报 防溺水安全手抄报