【数据结构】算法10.10-10.11 堆排序
来源:互联网 发布:在线数据库建模 编辑:程序博客网 时间:2024/06/10 02:58
#include<stdio.h>#include<string.h>#include<stdlib.h>#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2#define EQ(a,b) ((a) == (b))#define LT(a,b) ((a) < (b))#define LQ(a,b) ((a) <= (b))typedef int Status;typedef int ElemType;#define MAXSIZE 20typedef int KeyType;typedef char InfoType;typedef struct{ KeyType key; InfoType otherinfo;}RedType;typedef struct{ RedType r[MAXSIZE+1]; //0号单元置空或用作哨兵 int length;}SqList;typedef SqList HeapType;/*******************************声明部分****************************************/Status CreateSqList(SqList *L);//创建顺序表Status TraverseSqList(SqList L);//打印顺序表/*******************************函数部分****************************************/Status CreateSqList(SqList *L){ /* int i; printf("请输入长度:"); scanf("%d",&L->length); for(i = 1;i <= L->length;i++){ printf("请输入关键值:"); scanf("%d",&L->r[i].key); }*/ L->r[1].key = 49; L->r[2].key = 38; L->r[3].key = 65; L->r[4].key = 97; L->r[5].key = 76; L->r[6].key = 13; L->r[7].key = 27; L->r[8].key = 49; L->length = 8; return OK;}Status TraverseSqList(SqList L){ int i; for(i = 1;i<=L.length;i++) printf("%d ",L.r[i].key); printf("\n"); return OK;}void HeapAdjust(HeapType *H,int s,int m){ RedType rc; int i,j; rc = H->r[s]; for(j = 2*s; j <= m; j *= 2){ if(j < m && LT(H->r[j].key,H->r[j+1].key)) j++; if(!LT(rc.key,H->r[j].key)) break; H->r[s] = H->r[j]; s = j; } H->r[s] = rc;}void HeapSort(HeapType *H){ int i; RedType temp; for(i = H->length/2; i > 0;--i) HeapAdjust(H,i,H->length); for(i = H->length; i > 1; --i){ temp = H->r[1]; H->r[1] = H->r[i]; H->r[i] = temp; HeapAdjust(H,1,i-1); }}/*******************************主函数部分**************************************/int main(){ HeapType H; printf("创建顺序表:\n"); CreateSqList(&H); TraverseSqList(H); printf("堆排序:\n"); HeapSort(&H); TraverseSqList(H); return 0;}
0 0
- 【数据结构】算法10.10-10.11 堆排序
- 【数据结构&&算法】堆排序
- [数据结构] 堆排序算法
- 【数据结构与算法】堆排序
- 堆排序 | 数据结构与算法
- 【数据结构与算法】堆排序
- 数据结构与算法:堆与堆排序
- 数据结构与算法-堆与堆排序
- 数据结构之排序算法(一)-堆排序
- 数据结构排序算法之堆排序
- 数据结构排序算法——堆排序
- 算法与数据结构之堆排序
- 数据结构与算法之六堆排序
- 数据结构+算法系列四:I 堆排序
- 数据结构与算法——堆排序
- 《数据结构与算法》之堆排序
- 算法与数据结构学习 09 堆排序
- 数据结构:堆排序算法的实现
- 新版本提示
- 使用Memcache实现Session共享(单点登录)的原理
- Qt线程同步之一个生产者多个消费者
- 01-Java常见的数据类型
- 关于cocoapods安装?
- 【数据结构】算法10.10-10.11 堆排序
- 编程思想:面向对象和面向过程
- 最小生成树(普利姆算法、克鲁斯卡尔算法)
- char varchar nchar nvarchar区别
- ionic开发
- Android——View的绘制
- 【数据结构】算法10.11-10.14 2-路归并排序
- 邮件发送
- java静态变量声明和初始化