算法学习第一课-----堆排序
2017-08-26 12:57
204 查看
堆:是一种特殊的完全二叉树,分为大根堆和小根堆,顾名思义,根节点的值比孩子结点的值大的就是大根堆,反之则为小根堆。
此例要实现的功能就是输入n个正整数,将其排列输出小根堆
eg.输入:
14
99 5 36 7 22 17 46 12 2 19 25 28 1 92
输出:1 2 17 5 19 28 46 12 7 22 25 99 36 92
代码:
package pat;
import java.util.Scanner;
public class ReadNum {
public static void main(String[] args) {
Scanner cin=new
Scanner(System.in);
int
n=cin.nextInt(); //输入节点的个数
int a[]=new int[n+1];
for(int i=1;i<=n;i++){
a[i]=cin.nextInt(); //按顺序保存节点到a数组
}
cin.close();
int i;
for(i=n/2;i>=1;i--){ //从叶子节点开始向上调整
int
t,flag=0;
while(i*2<=n&&flag==0){ //有左孩子并且需要向上调整时
if(a[i]>a[i*2]) //根节点大时把左孩子的编号赋给t
t=2*i;
else //根节点小时把根结点的编号赋给t
t=i;
if(2*i+1<=n){ //当有有孩子并且根节点大于右孩子时把有孩子的编号赋给t
if(a[t]>a[2*i+1])
t=2*i+1;
}
if(t!=i){ //只有当根节点的编号发生改变时交换
int
temp;
temp=a[i];
a[i]=a[t];
a[t]=temp;
i=t; //把左孩子或者右孩子的编号给i,继续执行while
}
else
flag=1; //否则跳出while循环
}
}
for(int k=1;k
System.out.print(a[k]+"
");
}
}
}
此例要实现的功能就是输入n个正整数,将其排列输出小根堆
eg.输入:
14
99 5 36 7 22 17 46 12 2 19 25 28 1 92
输出:1 2 17 5 19 28 46 12 7 22 25 99 36 92
代码:
package pat;
import java.util.Scanner;
public class ReadNum {
public static void main(String[] args) {
Scanner cin=new
Scanner(System.in);
int
n=cin.nextInt(); //输入节点的个数
int a[]=new int[n+1];
for(int i=1;i<=n;i++){
a[i]=cin.nextInt(); //按顺序保存节点到a数组
}
cin.close();
int i;
for(i=n/2;i>=1;i--){ //从叶子节点开始向上调整
int
t,flag=0;
while(i*2<=n&&flag==0){ //有左孩子并且需要向上调整时
if(a[i]>a[i*2]) //根节点大时把左孩子的编号赋给t
t=2*i;
else //根节点小时把根结点的编号赋给t
t=i;
if(2*i+1<=n){ //当有有孩子并且根节点大于右孩子时把有孩子的编号赋给t
if(a[t]>a[2*i+1])
t=2*i+1;
}
if(t!=i){ //只有当根节点的编号发生改变时交换
int
temp;
temp=a[i];
a[i]=a[t];
a[t]=temp;
i=t; //把左孩子或者右孩子的编号给i,继续执行while
}
else
flag=1; //否则跳出while循环
}
}
for(int k=1;k
System.out.print(a[k]+"
");
}
}
}
相关文章推荐
- 一步步学习数据结构和算法之堆排序效率分析及java实现
- 【算法导论学习-013】堆排序(Heapsort)
- 算法学习记录-排序——堆排序
- 算法学习与代码实现5——堆排序
- 数据结构与算法学习-堆排序
- 算法学习笔记--堆排序
- 算法学习之一:堆排序
- 算法学习与实践之堆排序
- Java学习资料-Java常用算法-堆排序
- 算法学习笔记----第二部分:排序和顺序统计量----第6章、堆排序
- [算法学习笔记]排序算法——堆排序
- 数据结构与算法学习笔记——堆排序
- 七月算法强化学习 第一课 学习笔记
- 堆排序(Heap Sort)算法学习
- 算法学习之堆排序(java实现)
- 算法学习笔记----第二部分:排序和顺序统计量----第6章、堆排序
- 算法--堆排序学习以及模板
- 算法学习(二)----堆排序
- 算法学习——堆排序