昨天晚上在演算编译堆排序法对结构体一维数组进行关键字排序时候,遇到一些问题,把这些问题总结在这里,以待参考:
1 堆排序法:堆排序法,就是通过堆这种数据结构来实现排序,算法复杂度为O(nlogn)。堆是一种完全二叉树且所有的父节点均大于(或小于)其子节点。堆排序就是将所有待排序的元素组成一个堆,然后不断弹出堆顶的元素并调用函数维持堆序,直到所有元素均被弹出后,排序完成。被弹出的元素序列即一个有序数列。
我把修改过程序贴在下面.
#include "stdio.h"
#include "15ikey.c"
main()
{ int i;
static HEAPSORT stu[10]={
{101,"Zhang",'M',19,95.6},
{102,"Wang",'F',18,92.4},{103,"Zhao",'M',19,85.7},
{104,"Li",'M',20,96.3},{105,"Gou",'M',19,90.2},
{106,"Lin",'M',18,91.5},{107,"Ma",'F',17,98.7},
{108,"Zhen",'M',21,90.1},{109,"Xu",'M',19,89.8},
{110,"Mao",'F',18,94.9}};
HEAPSORT *p[10];
for