第十六周 项目一(6) 选择排序之堆排序

news/2024/5/19 4:29:01 标签: 堆排序, c语言, 算法, vc, 存储
/*  
 *Copyright (c) 2016,烟台大学计算机学院  
 *All rights reserved.  
 *文件名称:main.cpp  
 *作者:衣龙川  
 *完成日期:2016年12月15日  
 *版本号:vc++6.0  
 *  
 *问题描述: 哈希表及其运算的实现
 *输入描述:无  
 *程序输出:
*/    


main.c:

#include <stdio.h>
#define MaxSize 20
typedef int KeyType;    //定义关键字类型
typedef char InfoType[10];
typedef struct          //记录类型
{
    KeyType key;        //关键字项
    InfoType data;      //其他数据项,类型为InfoType
} RecType;              //排序的记录类型定义

//调整堆
void sift(RecType R[],int low,int high)
{
    int i=low,j=2*i;                        //R[j]是R[i]的左孩子
    RecType temp=R[i];
    while (j<=high)
    {
        if (j<high && R[j].key<R[j+1].key)  //若右孩子较大,把j指向右孩子
            j++;                                //变为2i+1
        if (temp.key<R[j].key)
        {
            R[i]=R[j];                          //将R[j]调整到双亲结点位置上
            i=j;                                //修改i和j值,以便继续向下筛选
            j=2*i;
        }
        else break;                             //筛选结束
    }
    R[i]=temp;                                  //被筛选结点的值放入最终位置
}

//堆排序
void HeapSort(RecType R[],int n)
{
    int i;
    RecType temp;
    for (i=n/2; i>=1; i--) //循环建立初始堆
        sift(R,i,n);
    for (i=n; i>=2; i--) //进行n-1次循环,完成推排序
    {
        temp=R[1];       //将第一个元素同当前区间内R[1]对换
        R[1]=R[i];
        R[i]=temp;
        sift(R,1,i-1);   //筛选R[1]结点,得到i-1个结点的堆
    }
}

int main()
{
    int i,n=10;
    RecType R[MaxSize];
    KeyType a[]= {0,6,8,7,9,0,1,3,2,4,5};//a[0]空闲,不作为关键字
    for (i=1; i<=n; i++)
        R[i].key=a[i];
    printf("排序前:");
    for (i=1; i<=n; i++)
        printf("%d ",R[i].key);
    printf("\n");
    HeapSort(R,n);
    printf("排序后:");
    for (i=1; i<=n; i++)
        printf("%d ",R[i].key);
    printf("\n");
    return 0;
}

运行截图:



http://www.niftyadmin.cn/n/1644813.html

相关文章

第十六周 项目一(7).归并排序

/* *Copyright (c) 2016,烟台大学计算机学院 *All rights reserved. *文件名称&#xff1a;main.cpp *作者&#xff1a;衣龙川 *完成日期&#xff1a;2016年12月15日 *版本号&#xff1a;vc6.0 * *问题描述&#xff1a; 哈希表及其运算的实现*输入描述&#xff1a;无 …

AndroidStudio内文字显示大小不一、注释文字不一等问题

前言 用了最新版本的android stuidio 问题 遇到的文字排版大小不一 强迫症的我 看到很 不爽 不爽 不爽&#xff01; 如图 解决方法 打开File --> Settings --> Editor --> Font --> Fallback font: 把< None > 改成 SimHei 黑体SimHei 字体是一个国标…

第十六周 项目一(8) 基数排序

/* *Copyright (c) 2016,烟台大学计算机学院 *All rights reserved. *文件名称&#xff1a;main.cpp *作者&#xff1a;衣龙川 *完成日期&#xff1a;2016年12月15日 *版本号&#xff1a;vc6.0 * *问题描述&#xff1a; 基数排序*输入描述&#xff1a;无 *程序输出&am…

数据结构学期总结

数据结构总结 转眼间一个学期就要过去了&#xff0c;时间过得很快&#xff0c;总感觉自己想要去学去感受的知识还没有学完&#xff0c;这门课就要结课了。很感谢贺老师给我们一个全新的课堂&#xff0c;让我收获很多。 CSDN这个博客论坛也是在跟着贺老师上课之后才知道的&am…

HUAWEI手机App的图标无法正常显示

问题&#xff1a;HUAWEI手机App的图标无法正常显示 如图 问题解决 //图标和圆角图标应该设置一致 否则只按照圆角的设置显示android:icon"drawable/app_icon"android:roundIcon"drawable/app_icon"

数据结构课程设计——电子投票系统

/* *Copyright (c) 2016,烟台大学计算机学院 *All rights reserved. *文件名称&#xff1a;main.cpp *作者&#xff1a;衣龙川 *完成日期&#xff1a;2016年12月29日 *版本号&#xff1a;vc6.0 * *问题描述&#xff1a;课程设计 电子投票系统 main.cpp&#xff1a; #in…

HashMap中负载因子的意义是什么?

学习记录 HashMap中负载因子的意义是什么&#xff1f; HashMap具有两个重要属性&#xff1a; size 和 load factor HashMap的实例具有两个影响其性能的参数&#xff1a;初始容量(0.75f)和负载因子(load factor)。 容量是哈希表中存储桶的数量&#xff0c;初始容量只是创建哈…

Hadoop集群所有或者部分的DataNode启动不了的解决方案

原因可能是多次Hadoop namenode -format导致clusterID不一致&#xff0c;具体可以在失败的.log文件中看到两个clusterID不一致&#xff0c;在这就先说具体解决方法 &#xff08;1&#xff09;先去hadoop路径下的配置文件hdfs-site.xml可知dfs.namenode.name.dir的地址和dfs.dat…