数据结构堆排序
来源:互联网 发布:软件公司财务报销制度 编辑:程序博客网 时间:2024/06/05 00:36
#include <iostream>#include<stdlib.h>// 创建一个结构体 typedef struct node{int data;struct node *left,*right;}BiTreeNode; int rear=0,front=0;//全局变量 //创建完全二叉树 BiTreeNode *CreateBiTree(int a[],BiTreeNode **Q,int n){BiTreeNode *root,*p,*t=NULL;int i;//先把根节点创建出来 root=(BiTreeNode *)malloc(sizeof(BiTreeNode));root->data=a[0];root->left=root->right=NULL;Q[++rear] = root;//新增加的for(i=1;i<n;i++){ p=(BiTreeNode *)malloc(sizeof(BiTreeNode)); p->left=p->right=NULL; p->data=a[i]; if(t==NULL) t=Q[++front]; //if(!t) //p=t->left;if(!t->left) t->left = p; else //p=t->right; if (!t->right){ t->right = p; t=NULL; } //p=Q[++rear]; Q[++rear] = p;}return root;}//void Adjust(BiTreeNode *root,BiTreeNode **Q){void Adjust(BiTreeNode **Q){int k,flag=0,m;BiTreeNode * t;while(1){k=front;flag=0; while(k>0){ t=Q[k]; //if(t->data > t->left->data){ if(t->data < t->left->data){m=t->data; t->data=t->left->data; t->left->data=m; flag=1; } //if(!t->right&&t->data > t->right->data){if(t->right&&t->data < t->right->data){ m=t->data; t->data=t->right->data; t->right->data=m; flag=1; } k--; } if(!flag) break;}}void printBiTree(BiTreeNode **Q,int n){int i;//for(i=n-1;i>0;i--)for (i = n; i > 0; i--) printf("%d ",Q[i]->data);printf("\n");} int main(int argc, char** argv) { int a[8]={3,2,5,8,4,7,6,9}; int m; // 用来交换 BiTreeNode **Q,*root; Q=(BiTreeNode **)malloc(9*sizeof(BiTreeNode *)); //创建完全二叉树 root=CreateBiTree(a,Q,8); //调整成大根堆 Adjust(Q); while(rear > 1){ m=Q[rear]->data; Q[rear]->data=Q[1]->data; Q[1]->data=m; rear--; // 砍掉叶子 if(Q[front]->right) // Q[rear]->right=NULL; Q[front]->right = NULL; else{ Q[front]->left=NULL; front--; }Adjust(Q);//新增加的 } //输出 printBiTree(Q,8); return 0;}
0 0
- 数据结构-排序-堆排序
- 数据结构 二叉堆 & 堆排序
- 【数据结构】堆、堆排序笔记
- 【数据结构】堆与堆排序
- 数据结构--堆排序
- 【数据结构】堆排序
- 数据结构_堆排序
- 数据结构 - 堆排序
- 数据结构--堆排序
- C++数据结构--堆排序
- 数据结构之堆排序
- 数据结构之堆排序
- 【数据结构&&算法】堆排序
- 【数据结构】堆排序
- [数据结构]堆排序
- 【数据结构】堆排序
- 数据结构-堆排序
- 数据结构之堆排序
- java代理
- django中模板head标签中的内容进入body的奇怪问题解决方法
- 如何成为一个牛逼的C/C++程序员?
- 语音识别之MFCC
- docker实战
- 数据结构堆排序
- R语言并行计算snow包文档(beta)
- 如何为 USB 设备选择配置
- zoj_2724 Windows Message Queue
- PE 3 Largest prime factor
- C++ 类类型隐式转换
- Cadstar格式导入功能
- nginx安装
- PE 4 Largest palindrome product