树形选择排序
来源:互联网 发布:淘宝霸王条款 编辑:程序博客网 时间:2024/05/22 17:49
时间复杂度nlogn, 空间复杂度n,这是不稳定排序方法
//树形选择排序#include<iostream>#include<cstdio>using namespace std;int q[100],l[100];void creInitTree(int l[],int n){ int m=2*n-1; for(int i=n;i<=m;i++) q[i]=l[i-n+1]; for(int i=n-1;i>=1;i--) q[i]=q[i*2]<=q[i*2+1]?q[i*2]:q[i*2+1];}int Max(int l[],int n){ int m=l[1]; for(int i=2;i<=n;i++) if(l[i]>m) m=l[i]; return m;}void TreeSort(int q[],int l[],int n){ l[1]=q[1]; int m=Max(l,n); for(int i=2;i<=n;i++) { int j=1; while(j<n) j=q[j*2]<=q[j*2+1]?j*2:j*2+1; q[j]=m; while(j>1) { j/=2; q[j]=q[j*2]<=q[j*2+1]?q[j*2]:q[j*2+1]; } l[i]=q[1]; }}int main(){ int n; scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&l[i]); creInitTree(l,n); TreeSort(q,l,n); for(int i=1;i<=n;i++) printf("%d ",l[i]); printf("\n"); return 0;}
0 0
- 树形选择排序
- 树形选择排序
- 树形选择排序
- 树形选择排序算法
- 【笔记】树形选择排序
- 选择排序:简单选择、树形选择
- 选择排序(二)--树形选择排序
- 数据结构-选择排序-树形选择排序
- 树形选择排序的实现
- 排序算法之树形选择排序
- 简单选择排序,树形选择排序,堆排序详解
- (1.3.7)选择排序:简单选择、树形选择
- 选择排序(二)--树形选择排序《 转载》
- 选择排序之树形选择排序(TreeSelectionSort)
- Sort——树形选择排序
- 算法二之树形选择排序
- 算法二之树形选择排序
- 选择排序、树形排序、堆排序的java代码实现
- CentOS 7.x 安装drupal 8
- Java开发中的23种设计模式详解(转)
- Css技术入门笔记02
- [Python]第三讲:数据类型
- 【LeetCode】16. 3Sum Closest
- 树形选择排序
- 还是畅通工程 HDU 1233
- 数据结构实验之链表七:单链表中重复元素的删除
- java多线程
- 通讯录-静态实现
- Objective-C 关于静态方法与实例方法
- 将流转换成字符串
- android 如何创建快捷小图标
- Linux操作系统安装nginxs