188宝金博页面版

  • 图案背景
  • 纯色背景
视图
标记
批注
批注本地保存成功,开通会员云端永久保存 去开通
483xe

上传于:2015-09-17

粉丝量:1

该文档贡献者很忙,什么也没留下。


  • 相关
  • 目录
  • 笔记
  • 书签

188宝金博页面版:更多相关文档

  • 堆排序算法

    星级: 2 页

  • 堆排序算法

    星级: 5 页

  • 堆排序算法

    星级: 2 页

  • 堆排序

    星级: 2 页

  • 堆排序代码

    星级: 5 页

  • 快速和堆排序

    星级: 14 页

  • 【精】课程设计报告

    星级: 21 页

  • 堆排序

    星级: 6 页

  • 堆排序

    星级: 30 页

  • 堆排序

    星级: 20 页

  • 堆排序

    星级: 2 页

暂无目录

点击鼠标右键菜单,创建目录

暂无笔记

选择文本,点击鼠标右键菜单,添加笔记

暂无书签

在左侧文档中,点击鼠标右键,添加书签

188宝金博页面版: 堆排序课程设计---精

下载积分: 1000

内容提示: 堆排序( 针对大根堆) 功能要求: 输入一组正整数关键字 将输入数据存入数组; 调用初始堆构造函数,建立初始堆; 调用堆排序函数进行堆排序,结果仍在数组中; 调用输出函数输出数组中的结果排序值。 算法思想: ① ① 将欲排序的序列构造成一个大根堆顺序存储结构的序列(按完全二叉树的存储结构);将欲排序的序列构造成一个大根堆顺序存储结构的序列(按完全二叉树的存储结构); ② ② 用此完全二叉树的根结点(该结点关键字的值一定是最大的)与序列的最后一个结点交换(并假定被删除);用此完全二叉树的根结点(该结点关键字的值一定是最大的)与序...

文档格式:DOC | 页数:3 | 浏览次数:37 | 上传日期:2015-09-17 16:54:48 | 文档星级:
堆排序( 针对大根堆) 功能要求: 输入一组正整数关键字 将输入数据存入数组; 调用初始堆构造函数,建立初始堆; 调用堆排序函数进行堆排序,结果仍在数组中; 调用输出函数输出数组中的结果排序值。 算法思想: ① ① 将欲排序的序列构造成一个大根堆顺序存储结构的序列(按完全二叉树的存储结构);将欲排序的序列构造成一个大根堆顺序存储结构的序列(按完全二叉树的存储结构); ② ② 用此完全二叉树的根结点(该结点关键字的值一定是最大的)与序列的最后一个结点交换(并假定被删除);用此完全二叉树的根结点(该结点关键字的值一定是最大的)与序列的最后一个结点交换(并假定被删除); ③ ; 针对第②步操作的剩余结点组成的子序列,将其重新构造成一个新的大根堆; ④ 重复②、③的操作,直到交换完(即删除完)所有的结点, 算法流程: 初始堆构造: 若完全二叉树是堆→则其所有子树均应是堆 由于叶结点为根的子树一定是堆,因此构造堆可从倒数第一的内结点为根的子树开始逐步将其构造成堆,直到将树根结点为根的整个子树构造成堆为止。由于叶结点为根的子树一定是堆,因此构造堆可从倒数第一的内结点为根的子树开始逐步将其构造成堆,直到将树根结点为根的整个子树构造成堆为止。 ① ① 若某子树已是堆, 则无须重新构造; ② ② 若某子树还不是堆, 则需调整结点的位置, 使其成为堆:用根结点的关键字与左、右孩子的关键字进行比较,如果根结点的大,说明其位置正确,则不调整;否则让根结点与左、右孩子中大的一个交换,交换后再从新的位置继续上述比较调整,直到位置正确或调整到叶结点为止。用根结点的关键字与左、右孩子的关键字进行比较,如果根结点的大,说明其位置正确,则不调整;否则让根结点与左、右孩子中大的一个交换,交换后再从新的位置继续上述比较调整,直到位置正确或调整到叶结点为止。 堆的重构 ① 若某子树已是堆, 则无须重新构造; ② ② 若某子树还不是堆, 则需调整结点的位置, 使其成为堆:用根结点的关键字与左、右孩子的关键字进行比较,如果根结点的大,说明其位置正确,则不调整;否则让根结点与左、右孩子中大的一个交换,交换后再从新的位置继续上述比较调整,直到位置正确或调整到叶结点为止。用根结点的关键字与左、右孩子的关键字进行比较,如果根结点的大,说明其位置正确,则不调整;否则让根结点与左、右孩子中大的一个交换,交换后再从新的位置继续上述比较调整,直到位置正确或调整到叶结点为止。 堆的排序: 由小到大输出最终结果\ 算法程序: #include <stdio.h> #include <stdlib.h> #define SIZE 10 typedef struct { int key; }DataType; void CreatHeap ( DataType a[ ] , int n , int h ) { int i , j, flag ; DataType temp ; i = h ; j = 2*i+1 ; temp = a[i] ; flag = 0 ; while ( j < n && flag != 1 ) { if ( j < n-1 && a[j].key < a[j+1].key ) j++ ;

188宝金博页面版:关注我们

  • 新浪微博

关注188宝金博页面版公众号

188宝金博页面版
阅读
APP
阅读
返回
顶部
188宝金博页面版官网登录在线平台入口(2026已更新)—江苏协昌电子科技股份有限公司