实验内容
1.掌握顺序查找
2.掌握二分查找
3.掌握快速排序,选择排序和堆排序,比较三种排序算法的时间复杂度。
编写以下程序
编写实现堆排序的算法。
思考题
给出无序数字的序列 4,1,3,1,2,7,5,6,10,8,7,12
请给出原始建立的无序堆;请给出从无序堆调整成有序堆的过程;请给出堆排序的调整过程。
源代码:
#include<stdio.h>
#include <iostream.h>
#include<math.h>
void HeapAdjust(int *a,inti,int size) //调整堆
{
int lchild=2*i; //i的左孩子节点序号
int rchild=2*i+1; //i的右孩子节点序号
int max=i; //临时变量
if(i<=size/2) //如果i不是叶节点就不用进行调整